我正在尝试在嵌入式C中编写随机数生成函数,其中我不能包含math.h
文件。这就是为什么我无法使用种子srand
功能。
除了时间之外,除了时间之外还有其他任何种子方式吗?
答案 0 :(得分:3)
srand
位于stdlib.h
,而不是math.h
。要随着时间推移播种,请添加time.h
以使用time(NULL)
,而不是math.h
。我不明白它是如何相关的。rand
和srand
不可用,您可以自行创建一个,例如LCG或Mersenne twister。答案 1 :(得分:3)
考虑使用Mersenne Twister,来源是例如here - 比传统的线性同余发生器具有更高的质量,非常长的时期,深入研究和祝福,近期的大量学术文献。
答案 2 :(得分:0)
考虑一下观察through this讲座,可能会给你一些想法(和代码)。 pdf经历了几个不同的选项,甚至提供了一些代码。
答案 3 :(得分:0)
我正在尝试在嵌入式C中编写随机数生成函数,其中我不能包含
math.h
文件。这就是为什么我无法使用种子srand
功能。
srand()
通常使用time()
播种,并在<time.h>
中定义,而不是在<math.h>
中定义。
除了时间之外,除了时间之外还有其他任何种子方式吗?
当然,你可以用你想要的任何东西播种。这取决于您的平台可用的内容。