我从事C语言编程,想(极力)制作一个随机数生成器,不仅可以每次运行生成不同的数字,而且每次运行程序都会生成不同的序列。我尝试过网上几乎所有的方法,最终得出了两种好用的随机数生成器。第一种方法是每次使用不同的种子(seed),但这意味着我必须每次使用不同的随机种子,这个问题我一开始并没有解决。以下是我现在尝试的方法,但它并不像我想要的那样真正随机:
int myrand(int random_seed){
random_seed = random_seed * 1103515245 +12345;
return (unsigned int)(random_seed / 65536) % 32768;
}
每次调用函数时,我将种子增加1。
第二种方法是使用time.Time更改来实现随机性。我也尝试了许多方法来实现这一点。我的最新尝试可以在此处找到:Compiler error-Possible IDE error"undefined reference to gettimeofday error",但是我无法使用gettimeofday函数,因为我在Windows上工作。而且,在那个问题中我没有得到任何答案。
有人能告诉我如何在Windows下使用C实现一个随机生成器(可能使用时间)吗?或者我应该使用Unix?
srand()
有问题吗?你可以使用时间作为种子来初始化,像这样:srand( time(NULL) );
- Hunter McMillen