丄帝De咗臂 发表于 2015-6-7 18:37:35

伪随机数

Arduino中的随机数函数:random()

使用方法:random(max) 或者random(min, max)
参数:min - 随机数的最小值,随机数将包含此值;max - 随机数的最大值,随机数不包含此值。即半闭半开区间。
返回值:min和max-1之间的随机数( 数据类型为long )


伪随机数:计算机产生的随机数一般都只是一个周期很长的数列,不是真的随机数。也就是说,随机数一般是伪随机数,每个随机数都是由随机种子开始的一个已定的数列(周期很长)。一般地,为了随机数更真一点,随机种子在系统中通常是参照系统时钟生成的。伪随机数生成器将作为“种子”的数当作初始整数传给函数。这粒种子会使这个球(生成伪随机数)一直滚下去。伪随机数生成器的结果仅仅是不可预测。由伪随机数生成器返回的每一个值完全由它返回的前一个值所决定(最终,该种子决定了一切)。如果知道用于计算任何一个值的那个整数,那么就可以算出从这个生成器返回的下一个值。结果,伪随机数生成器是一个生成完全可预料的数列(称为流)的确定性程序。


改进方法:如需要在一个random()序列上生成真正意义的随机数,在执行其子序列时使用randomSeed()函数预设一个绝对的随机输入,例如在一个断开引脚上的analogRead()函数的返回值。反之,有些时候伪随机数的精确重复也是有用的。这可以在一个随机系列开始前,通过调用一个使用固定数值的randomSeed()函数来完成。例子
long randNumber;

void setup(){
Serial.begin(9600);

//如果模拟输入引脚0为断开,随机的模拟噪声
//将会调用randomSeed()函数在每次代码运行时生成
//不同的种子数值。
//randomSeed()将随机打乱random函数。
randomSeed(analogRead(0));
}

void loop() {
//打印一个0到299之间的随机数
randNumber = random(300);
Serial.println(randNumber);

//打印一个10到19之间的随机数
randNumber = random(10, 20);
Serial.println(randNumber);

delay(50);
}
求解:请问各位,在ArduBlock里面如何解决?








丄帝De咗臂 发表于 2015-6-8 09:26:40

大神们,谁有解决方案:dizzy:

大连林海 发表于 2015-6-8 19:22:17

问问苦海
页: [1]
查看完整版本: 伪随机数