我在AVR Studio 4中编写了一个应用程序,它生成随机数并在七段显示器上输出它们。在我使用种子时,种子值随后被随机化并输出值。每次运行程序时,此方法显然会产生相同的随机数序列(并显示相同的序列)。是否有一种我可以使用的替代方法,它不使用种子,因此每次都不会以相同的数字启动程序,允许使用不同的随机数。
由于
答案 0 :(得分:3)
每次微控制器启动时,它看到的内部状态与启动时的内部状态完全相同。这意味着无论您使用何种算法,其输出始终都是相同的。
让它产生不同行为的唯一方法是通过引入一些外部信息或在启动之间存储状态以某种方式在启动时修改其状态。关于如何执行第一个选项的一些想法可能是测量用户按键的持续时间(如果您的系统有按钮)或感测温度或其他外部输入并使用它来为算法播种。然而,最简单的选择可能只是在EEPROM中存储一个计数器,每次启动后递增并使用它来生成种子。