极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14419|回复: 3

求教 randomSeed()函数

[复制链接]
发表于 2014-11-28 12:19:06 | 显示全部楼层 |阅读模式
Arduinio从基础到实践中   在RGB彩灯试验中,用randomSend(analogRead(0)) 产生一个伪随机数,设置种子。但是在下一个试验中led火焰效果中也用到了random函数产生随机数,但是之前为什么不用randomSeed()设置种子?
回复

使用道具 举报

发表于 2014-11-28 12:32:58 | 显示全部楼层
randomSeed 基本上每個程式只執行一次就可以了.  

當然, 如果想多點變化, 可以在中途再加入一些類似 randomSeed(millis()) 或 randomSeed(micros()) 的, 讓變化更大.

如果沒加上 randomSeed, 那每次執行都是用同一個 seed, 結果就會是每次執行都一樣的了, 失去了 random 的意義.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-29 17:36:58 | 显示全部楼层
Super169 发表于 2014-11-28 12:32
randomSeed 基本上每個程式只執行一次就可以了.  

當然, 如果想多點變化, 可以在中途再加入一些類似 ran ...

嗷嗷  。。。其实还不是太理解
回复 支持 反对

使用道具 举报

发表于 2014-11-29 21:55:36 | 显示全部楼层
陌木子 发表于 2014-11-29 17:36
嗷嗷  。。。其实还不是太理解

可能我太多口, 講多了, 反而令你混亂.

randomSeed 是為 Random function 設定一個開始根值, 之後的隨機變數就由這個值開始計算出來.
由於電腦中其實是沒有所謂隨機的東西, 相同的開始值, 將來 random 得出的結果就是一樣了, 或者可以說是同一數列.

為免每次執行程式時, random 的結果都是相同的數值, 在開始時可以用 randomSeed 設定一個比較有變化的開始值.

在 RGB 燈的例子中, 由於 A0 沒接上, analogRead(0) 的結果是不知的值, 可以用作一個 seed.  之後執行 random 時, 每有不同的結果.  注意, 如果 A0 是接上了, 最好不要用 analogRead(0) 了.

至於 led 火燄效果中, 如果不執行 randomSeed 的設定, 那麼, 這個程式執行多少次, random 的結果都會是一樣, 那就失去了 random 的意義.


回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-16 22:17 , Processed in 0.056733 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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