我想在C中做一个随机数发生器 - 与使用它的标准库进行Java相比,出奇地难得多。随机数发生器产生相同的随机数
这是我的代码。现在它可以工作,但是每次我编译和运行时,我都会得到相同的随机数。所以这些数字是随机的,只是他们不改变每个方法调用。这是我需要的东西!
此方法在每次调用方法时都应返回不同的数字。
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void generateRandomNumber()
{
srand(time(NULL));
//i tried rand() but thats worse all the numbers are the same 33,33,33 etc
int randomNumber = random() % 100;
printf("%d\n", randomNumber);
}
int main()
{
for (int i = 0; i < 100; i++)
generateRandomNumber();
}
只有你进入循环之前播种一次,,在'main'。并且'void srand(unsigned int seed);'函数声明不需要存在,它应该包含在'time.h'头文件中。循环将执行得如此之快,以至于您每次都使用相同的时间值(以秒为单位)播种它,因此您可以得到相同的随机数。你可能会得到_超级幸运一次,秒数会在你的循环中间翻转,但是你会得到2个值。 – yano
@ yano它应该包括,但是当我编译与GCC它告诉我它应该。我尝试在主要播种一次,所以你说移动srand(时间(空));主要?我试过没有区别 – Mark
我相信这个调用是'rand()',不知道'random()'是什么。你也不需要'int rand(void);'函数声明。检查这个笨蛋,它会让你走上正轨。 – yano