iar for arm : stdlib.h / rand()
说明 :
rand()的内部实现是用线性同余法做的,是伪随机数,因其周期特别长,故在一定的范围里可看成是随机的。
返回:
函数返回的随机数值的范围在0至RAND_MAX 间。RAND_MAX的范围由返回数据的类型决定,iar for arm中返回类型为int (4byte)。
0~RAND_MAX每个数字被选中的机率是相同的。用户未设定随机数种子时,系统默认的随机数种子为1。
rand()产生随机数算法每次执行时是相同的。若要不同,需用真随机的数来初始化它。就是种一个真随机的种子。就要用函数srand()了。
参数:无
stdlib.h / srand()
说明:
设置随机数的种子。如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。
返回:无
参数:
iar for arm 中输入参数类型是 unsigned int (4字节)。此数需通过个办法来获得真随机性。
如:RSSI信号,上电RAM中值,AD采集一个噪声端口,定时器随机计数,等等。
用法:
rand()和srand()要一起使用,为使每次得到的随机数不一样,首先,srand()用来初始化随机数种子,才能用rand()来产生随机数。
种子的每一位都需是真随机,然后组成一个真随机数(例如32bit,需32次从adc里取出一个bit)。且种子不能为0.
“模除+加法”的方法(rand() % 100+1)可以实现区间内随机。乘以一个间隔,可实现间隔随机。
***************<暂停,休息一下!>*********************************************