我正在尝试在无法包含math.h
文件的嵌入式 C 中编写随机数生成函数。这就是为什么我无法使用种子srand
功能。
除了时间,还有其他方法可以播种吗?
srand
是在stdlib.h
,不是math.h
。用时间播种你包括time.h
使用time(NULL)
,而不是math.h
。我看不出它有什么关系。rand
,srand
您可以自己创建一个,例如LCG或Mersenne twister。考虑使用 Mersenne Twister,例如这里的来源-质量比传统的线性同余发生器高得多,周期极长,在大量最近的学术文献中进行了深入研究和祝福。
考虑看一看这个讲座,可能会给你一些想法(和代码)。pdf 经历了几个不同的选项,甚至给出了一些代码。
我正在尝试在无法包含
math.h
文件的嵌入式 C 中编写随机数生成函数。这就是为什么我无法使用种子srand
功能。
srand()
通常使用 来播种time()
,并且在 中定义<time.h>
,而不是在 中定义<math.h>
。
除了时间,还有其他方法可以播种吗?
当然,你可以用任何你想要的东西播种它。这取决于您的平台可用的内容。