我正在寻找如何生成随机数的令人满意的解决方案。
大多数帖子都提到使用 R[n+1] = (a *R[n-1 + b) %n、这个伪随机函数或其他一些数学函数。
但奇怪的是,我不是在寻找这些;我想要一些非算法的答案。准确地说,一个“面试”的答案。一些容易理解的东西,而不是让面试官觉得我抄袭了一个方法:)。
对于面试问题,一个常见的答案可能是查看击键之间的间隔(要求用户键入内容)、磁盘寻道时间或来自断开源的输入——这将为您提供来自 MIC 插座或其他任何东西的热电子.
LavaRnd使用带镜头盖的数码相机,这是最后一个版本。
一些操作系统允许间接访问这些随机输入中的一些,通常是通过一个安全的随机函数;比通常的 RNG 更慢但更安全。
根据面试的工作,您可以谈论测试原始数据以检查熵,并通过使用像 SHA-256 这样的加密哈希函数来集中熵。
还有专门的、昂贵的硬件卡,它们使用各种量子效应来生成真正的随机数。
取系统时间,加一个种子,取模上限。如果上限小于0,则将其乘以-1,然后结果减去最大值...不是很强但符合您的要求?
如果你有一个 UI 并且只需要几个随机数,可以要求用户移动鼠标,输入几个种子,输入几个单词并将它们用作种子