用户工具

站点工具


ocrobot:kit:arduino_star_kit:tutorial020

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
ocrobot:kit:arduino_star_kit:tutorial020 [2017/04/07 10:03] – 外部编辑 127.0.0.1ocrobot:kit:arduino_star_kit:tutorial020 [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1
行 1: 行 1:
 +======获取随机数======
  
 +这个例程展示如何使用断开连接的A0端口ADC读数。
 +
 +在对程序进行加密过程中,我们常常会用到随机数,怎样在OCROBOT控制板中获取随机数呢?
 +
 +获取随机数我们需要一个种子,这个种子我们可以使用断开连接的A0端口ADC读数。
 +=====代码=====
 +把A0端口的读数作为随机数种子,产生一个最大值不超过600的随机数。
 +<code cpp>
 +long randNumber;
 + void setup(){
 +  Serial.begin(9600);
 +  randomSeed(analogRead(A0));
 +}
 +void loop(){
 + randNumber = random(600);
 +  Serial.println(randNumber);
 +  delay(200);
 +}
 +
 +</code>
 +=====效果参考=====
 +{{:ocrobot:kit:arduino_star_kit:1.png?nolink|}}
 +{{youku>XNzE5NzQ3MTY0?900x530}}
 +
 +=====代码=====
 +产生的随机数除了可以限制最大值,还可以同时限制最小值。
 +每次首先输出一个最大值不超过300的随机数,然后输出一个10到19之间的随机数。
 +<code cpp>
 +
 +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(200);
 +}
 +
 +</code>
 +<WRAP center round tip 100%>
 +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()函数来完成。
 +</WRAP>
 +
 +=====效果参考=====
 +{{:ocrobot:kit:arduino_star_kit:2.png?nolink|}}
 +{{youku>XNzE5NzYxMDA0?900x530}}
 +
 +[[ocrobot:kit:arduino_star_kit:main|返回上一级]]