6339浏览
查看: 6339|回复: 2

伪随机数

[复制链接]
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里面如何解决?








丄帝De咗臂  高级技匠
 楼主|

发表于 2015-6-8 09:26:40

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

使用道具 举报

大连林海  初级技神

发表于 2015-6-8 19:22:17

问问苦海
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail