大家好! 我尝试在AVR Asm(atmega128)上随机化数字。所以我需要在开始时初始化值,并注意对于asm x86开发人员使用“rdtsc”指令。是否可以在AVR架构中初始化一些随机初始值,如rdtsc?是否可以使用不同的init值? 谢谢和问候。
答案 0 :(得分:0)
您可以使用运行CPU时钟的计时器(因为这就是TSC所用的计时器)。也就是说,这仅足以播种伪随机数生成器,并且生成的随机数不适合加密操作。
答案 1 :(得分:0)
我知道,你知道,但是要再次强调,你不能使用任何定时器/计数器值作为随机数发生器。您只能将其用作伪随机算法种子数的源。
为了做到这一点,你需要一个快速连续计数的计时器/计数器和实际作为随机事件发生器执行的人。
如果没有人工干预,则无法使用计时器或计数器获取随机数种子。
在计算机中,人类随机化程序开始的时刻。
计数器实际上并不那么重要。对它的唯一要求是比人类反应时间快得多。几千赫兹是可接受的频率。这样,您可以使用一些定时器,配置为尽可能最快的频率,或者甚至是在每个主程序循环中递增的简单软件计数器(当然,如果程序足够快)。
如果您的设备支持实时时钟,请使用它。通过这种方式,您可以获得更好的随机化,因为即使关闭整个devide,RTC也会运行。
这样,人类提供的开关将提供随机时刻事件。
在所有情况下,用于生成伪随机数的算法比种子生成方法重要得多。
因此,make尽可能简单和愚蠢,专注于伪随机数生成器。