我正在尝试制作一个随机数生成器,可以非常快速地生成许多新的随机数。我尝试过srand(time(NULL))但是因为我试图快速生成很多数字,所以这不起作用。接下来我尝试了这个:
int main()
{
seed_plus=time(NULL);
int i;
for (i=0; i<10;i++)
{
double R=ran(seed_plus);
printf("%lf\n",R);
seed_plus=seed_plus+1;
}
}
double ran (int seed_plus)
{
srand(seed_plus);
double random_number = (double)random()/(double)RAND_MAX;
return(random_number);
}
这样可行,但我希望“ran”函数中包含“seed_plus = seed_plus + 1”。当我在函数中移动该语句时,我得到许多相同的“随机”数字,这使我相信seed_plus没有被保存到内存,因为它不是函数返回的值?
我对C很新,所以任何帮助都会受到赞赏!
答案 0 :(得分:4)
您只需拨打srand
一次,之后,对random
的所有下一次通话每次都会返回不同的号码。
答案 1 :(得分:2)
每次需要随机数时,没有理由为随机数生成器播种。只需简化您的代码:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
double ran(void)
{
return (double)rand() / RAND_MAX;
}
int main(void)
{
srand(time(NULL));
for (int i = 0; i < 10; i++)
printf("%f\n", ran());
}