随机数生成 - ARM7上的C.

时间:2011-03-25 19:42:24

标签: c math random arm

我需要生成一个随机数,现在这个数字需要介于10到120秒之间。 现在,在C中,我可以使用Random来完成此操作,但是我无法访问该功能。 为了尝试和聪明,我已经确定了一些随机数据,我可以访问无线扫描功能(实际上最终需要这个随机数),它为我提供了每个检测到的Wi-Fi信号的信号强度。

使用这个我以为我可以创建一个很好的随机数,但显然这会给出一个非常大的总和,需要在某种程度上缩小 - 这减少了不同随机数之间的潜在差异。

随机数将用作尝试互相连接的不同无线设备的退避计时器,显然随机数字可以实现更好。

有什么想法?也许有一种更简单的方法来实现这一目标? 感谢您的任何提示。

编辑:使帖子可读!

2 个答案:

答案 0 :(得分:2)

对所有信号强度应用XOR并将其转换为整数或任何您需要的值。

或者,这或多或少是在C:

中定义rand()的方式
static unsigned int next = 1;

int rand_r(unsigned int *seed)
{
       *seed = *seed * 1103515245 + 12345;
       return (*seed % ((unsigned int)RAND_MAX + 1));
}

int rand(void)
{
       return (rand_r(&next));
}

void srand(unsigned int seed)
{
       next = seed;
}

答案 1 :(得分:0)

标准库函数是rand(),而不是Random();为什么你不能用它?对于它的所有潜在缺陷,它可能对退避定时器来说已经足够了,因为起始时间本身是由冲突和其他设备的异步动作随机化的。

人们可能会对这个函数的上述缺陷抒情,更多的是在其返回值中使用简单的模运算,但它是关于适用性和充分性,并且rand()在这方面是充分的情况下。