伪随机数

2015-06-079190
AI 快速预览详细 收起
本文介绍了Arduino中的random()函数,用于生成伪随机数。random()函数的用法包括random(max)和random(min, max),返回值为min到max-1之间的long类型随机数。伪随机数是通过一个确定性的程序生成的,每个值都由前一个值决定。为了提高随机性,可以通过randomSeed()函数预设一个绝对的随机输入,例如在一个断开引脚上的analogRead()函数的返回值。
Arduino中的随机数函数:random()

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


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


改进方法:如需要在一个random()序列上生成真正意义的随机数,在执行其子序列时使用randomSeed()函数预设一个绝对的随机输入,例如在一个断开引脚上的analogRead()函数的返回值。反之,有些时候伪随机数的精确重复也是有用的。这可以在一个随机系列开始前,通过调用一个使用固定数值的randomSeed()函数来完成。例子
  1. long randNumber;
  2. void setup(){
  3.   Serial.begin(9600);
  4. //如果模拟输入引脚0为断开,随机的模拟噪声
  5. //将会调用randomSeed()函数在每次代码运行时生成
  6. //不同的种子数值。
  7. //randomSeed()将随机打乱random函数。
  8.   randomSeed(analogRead(0));
  9. }
  10. void loop() {
  11. //打印一个0到299之间的随机数
  12.   randNumber = random(300);
  13.   Serial.println(randNumber);  
  14. //打印一个10到19之间的随机数
  15.   randNumber = random(10, 20);
  16.   Serial.println(randNumber);
  17.   delay(50);
  18. }
复制代码

求解:请问各位,在ArduBlock里面如何解决?








创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(2)
qq815076543322
qq815076543322
问问苦海
丄帝De咗臂
丄帝De咗臂
作者
大神们,谁有解决方案:dizzy:
- 没有更多了 -