我在 C 中工作,我正在(拼命地)尝试制作一个随机生成器,它不仅生成 每次我运行生成器时都有不同的数字,但每次运行程序时也会有不同的顺序。我测试了我在网上找到的几乎所有东西。我得出了 2 种制作好的随机生成器的好方法。 第一个是每次都使用不同的种子。但这意味着我每次都必须使用不同的随机种子,这是我一开始没有解决的问题。这是我现在正在尝试的,但它不是真的随心所欲:
int myrand(int random_seed){
random_seed = random_seed * 1103515245 +12345;
return (unsigned int)(random_seed / 65536) % 32768;
}
每次我调用该函数时,我都会将种子增加 1。
第二种方法是使用时间。时间变化,这是随机性。我也尝试了很多方法来实现这个。我最近的尝试是在这里: Compiler error-Possible IDE error"undefined reference to gettimeofday error" 但我无法使用 gettimeofday 函数,因为我在 Windows 中工作。同样在那个问题中我没有得到任何答案。
谁能帮助我如何在 Windows 中使用 C 实现随机生成器(可能使用时间)?或者我应该使用 Unix?
最佳答案
为您的 RNG 植入良好的熵源。
在 unix 下,使用/dev/random。
在 Windows 下,使用类似于 CryptoAPI - Windows equivalent of /dev/random 的东西
关于c - 试图找到一个完全随机数生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13938492/