gpt4 book ai didi

c++ - 如何为随机生成器生成好的随机种子?

转载 作者:搜寻专家 更新时间:2023-10-31 01:53:47 24 4
gpt4 key购买 nike

我当然不能为此使用随机生成器。目前我正在从 unixtime()+microtime() 创建 CRC32 哈希。

有没有比散列 time()+microtime() 更聪明的方法?

虽然我对结果并不完全满意,我希望它更随机,但我可以看到其中的强烈模式,直到我添加了更多对 MicroTime() 的调用但它变得更慢,所以我寻找执行此操作的最佳方法。

这个愚蠢的代码生成了迄今为止我能做出的最好的输出,计算是必要的,或者我可以在输出中看到一些模式:

starthash(crc32);
addtohash(crc32, MicroTime());
addtohash(crc32, time(NULL)); // 64bit
addtohash(crc32, MicroTime()/13.37f);
addtohash(crc32, (10.0f-MicroTime())*1337.0f);
addtohash(crc32, (11130.0f-MicroTime())/1313137.0f);
endhash(crc32);

MicroTime() 返回程序启动后经过的微秒数。我已将 addtohash() 重载到每种可能的类型。

我宁愿采用非库解决方案,反正大概只有 10 行代码,我不想安装庞大的库,因为我实际上并不需要那么多,而且我更感兴趣的是代码而不是仅仅从函数调用中使用它。

最佳答案

如果有任何疑问,请在 Windows 上从 CryptGenRandom 获取种子,或者从 dev/randomdev/urandom 读取 * NIX 系统。

这对您的目的来说可能有点矫枉过正,但除非它会导致性能问题,否则没有必要像时间那样弄乱低熵源。

这不太可能是杀伤力不足的。如果您正在编写真正需要高质量安全随机数据的代码,并且没有在问题中提到这一点,那么,您得到了您应得的;-)

关于c++ - 如何为随机生成器生成好的随机种子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10653546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com