我确实了解Python,并且在设定的时间间隔内创建随机数非常简单,但在C 中似乎有点复杂。这是我通过查看有关堆栈溢出的其他问题得到的结果。
int diceroll_1;
diceroll_1=(rand()%3)+1;
printf("%d\n",diceroll_1);
问题是它每次都给我 3。我希望每次编译和运行程序时它都不同。我希望它是从 1 到 3 随机的。我的理解是,这可能会保存它,这就是为什么它每次都会生成 3 而不是我想要的。如何每次生成一个随机数而不是相同的数字?
你播种了吗srand
?如果没有,请尝试这样:
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
srand(time(NULL)); // only once
// roll the dice
int diceroll_1;
diceroll_1=(rand()%3)+1;
printf("%d\n",diceroll_1);
return 0;
}
Output:
Georgioss-MacBook-Pro:~ gsamaras$ gcc -Wall main.c
Georgioss-MacBook-Pro:~ gsamaras$ ./a.out
3
Georgioss-MacBook-Pro:~ gsamaras$ ./a.out
1
PS:
rand()
产生伪随机数,正如我们的教授一样。在IP上坚持!它需要播种,否则它会一次又一次地给出相同的数字,因为从ref http://man7.org/linux/man-pages/man3/rand.3.html我们有:
如果未提供种子值,则自动执行 rand() 函数
种子值为 1。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)