【发布时间】:2010-11-13 03:03:18
【问题描述】:
我正在用 C 编写一些嵌入式代码,需要使用 rand() 函数。不幸的是,控制器的库中不支持 rand()。我需要一个快速的简单实现,但更重要的是空间开销很小,可以产生相对高质量的随机数。有谁知道使用哪种算法或示例代码?
编辑:它用于图像处理,因此“相对高质量”意味着合适的周期长度和良好的均匀特性。
【问题讨论】:
-
您在寻找什么,更具体地说?您需要较长的周期长度吗?我们所说的数字有多大(16 位、32 位等等)?它们必须有多随机? “空间开销”是指 ROM 限制、RAM 限制还是两者兼而有之?
-
如果您有 SysTick 或其他可用于计算从上电到当前时间的时间的东西,那么您可以使用该计数器作为下面显示的一些随机生成器的种子。跨度>
-
这是 C++ 类中Mersenne Twister 的实现