【发布时间】:2014-09-18 22:55:04
【问题描述】:
我在调用 srand 以插入随机数以解决加法问题的语法有问题?尝试查找类似的程序以查看语法,但没有运气。
#include<stdio.h>
#include"simpleio.h"
int main()
{
// int seed;scanf("%d",&seed);
// srand((unsigned)seed);
int decision,n,o ;
// scanf("%d", &n);
// srand((unsigned)n);
do{
printf("1.Give me an addition problem.\n"
"2.Give me a subtraction problem.\n"
"3.Give me a multiplication problem.\n"
"4.Quit\n");
scanf("%d", & decision);
} while (decision>5 && decision<0);
if (decision==1)
{
printf("1+1= ");
}
else if (decision==2)
{
printf("1-2\n");
}
else if (decision==3)
{
printf("1*2\n");
}
else if(decision==4)
{
printf("\n");
}
return 0;
}
【问题讨论】:
-
decision>5 && decision<0总是假的。改为decision>4 || decision<1 -
您还没有告诉我们您遇到了什么问题。您的
srand电话已被注释掉。您的代码在有或没有它们的情况下都可以编译(一旦我删除了未使用的#include"simpleio.h")。在拨打rand()之前,您应该只拨打一次srand()。如果你正在从用户那里读取种子,你不妨将种子声明为unsigned,这样你就不必转换它了。你到底在问什么? -
我不知道如何使用 srand 在加法问题 keith 中插入两个随机整数。我的问题是设置 srand 调用,我以前从未使用过这个调用。请不要笑,是的,我对编程还很陌生,我想了解一些有关如何使用和设置 srand 来执行放置两个随机操作的信息要添加的整数。你能帮我设置一下并简要解释一下基思吗?
-
srand()只播种随机数生成器。您调用rand()从中检索随机数。但请注意,如果您要超越简单的算术问题生成,就会有很多陷阱。由srand()和rand()实现的生成器不 适合必须严肃地使用随机数。在任何情况下,rand()都适合此用例,只要您每次执行程序时只调用srand()一次。 -
@wallyk 我刚刚摆脱了标准的新用户错误,即每次调用
srand一次以“确保已播种”。知道第二次使用种子来获得相同序列的用户不会问 this 问题....(正确)多次调用它的示例将在关卡生成器中迷宫游戏。您可以在每个级别播种一次,以便可以在该级别重新启动游戏,并将基本迷宫的状态存储减少到基本上单个种子值。但是对于 OP 的闪存卡模拟,每次运行一次并从 time() 播种是好的。