1

我一直想知道像NES这样的旧游戏机如何能够在没有像time(NULL)这样的种子的情况下生成随机数;

谢谢

4

1 回答 1

2

您可以使用后续按键、操纵杆移动或任何类似的人为交互之间的时间来做到这一点。如果您可以对事件进行计时,例如以微秒为单位并取模 100 左右,那么您将以合理的种子结束。如果需要,您也可以多次执行此操作以收获足够多的位以创建足够大(即 64 位)的种子。

在其他一些不能依赖人工交互来获取种子的系统上,复位电路使用 RC 电路,但组件变化会使每个系统的时间略有不同。外部(与 CPU 无关的计数器)可以在上电时启动,然后在启动期间由 CPU 读取。如果计数器相对于复位电路时间常数具有足够的分辨率,那么最后一位可以用作种子。在以太网时代之前,网络设备很久以前就使用它来生成 MAC 等效地址。

--ga

于 2012-05-18T21:54:29.453 回答