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