极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10705|回复: 0

OCROBOT入门教程020--获取随机数

[复制链接]
发表于 2014-4-25 16:16:04 | 显示全部楼层 |阅读模式
本帖最后由 董董soul 于 2016-10-27 11:12 编辑

在对程序进行加密过程中,我们常常会用到随机数,怎样在OCROBOT控制板中获取随机数呢,我们这节课就学习一下。

获取随机数我们需要一个种子,这个种子我们可以使用断开连接的A0端口ADC读数。

下面的代码是把A0端口的读数作为随机数种子,产生一个最大值不超过600的随机数。


  1. long randNumber;

  2. void setup(){
  3.   Serial.begin(9600);
  4.   randomSeed(analogRead(A0));
  5. }

  6. void loop(){
  7.   randNumber = random(600);
  8.   Serial.println(randNumber);

  9.   delay(200);
  10. }
复制代码

我们打开串口监视器来查看产生的随机数。





产生的随机数除了可以限制最大值,还可以同时限制最小值。我们重新烧录下面的代码,每次首先输出一个最大值不超过300的随机数,然后输出一个10到19之间的随机数。

  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(200);
  18. }
复制代码


打开串口监视器进行查看~







randomSeed(seed)
描述

使用randomSeed()初始化伪随机数生成器,使生成器在随机序列中的任意点开始。这个序列,虽然很长,并且是随机的,但始终是同一序列。
如需要在一个random()序列上生成真正意义的随机数,在执行其子序列时使用randomSeed()函数预设一个绝对的随机输入,例如在一个断开引脚上的analogRead()函数的返回值。
反之,有些时候伪随机数的精确重复也是有用的。这可以在一个随机系列开始前,通过调用一个使用固定数值的randomSeed()函数来完成。
参数
long,int – 通过数字生成种子。

random()
描述

使用random()函数将生成伪随机数。
语法
random(max)
random(min, max)
参数
min – 随机数的最小值,随机数将包含此值。 (此参数可选)
max – 随机数的最大值,随机数不包含此值。
返回
min和max-1之间的随机数( 数据类型为long )
注意
如需要在一个random()序列上生成真正意义的随机数,在执行其子序列时使用randomSeed()函数预设一个绝对的随机输入,例如在一个断开引脚上的analogRead()函数的返回值。

反之,有些时候伪随机数的精确重复也是有用的。这可以在一个随机系列开始前,通过调用一个使用固定数值的randomSeed()函数来完成。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 15:08 , Processed in 0.039998 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表