c - 试图找到一个完全随机数生成器

标签 c windows unix random time

我在 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/

相关文章:

c++ - 如何将消息发送到接收期间找到的SCTP关联?

c - 重新分配数组的行和列

Python初学者——如何自定义输出窗口

python - tkinter Text() 小部件上的 4096 单行字符限制?

unix - 硬盘空间不足

python - 如何通过 SWIG 在 Python 和 C 之间编码指向 cstring 的指针

c - 并行应用音频过滤器并合并结果缓冲区

C++ - Windows IoT Core 远程调试器 - 调试器无法启动

unix - 删除下划线并将其后的字符大写

检查宏中函数的返回值