新人问个问题,才学不长时间。
ruby吧
全部回复
仅看楼主
level 7
泉霞飞0Hq 楼主
内置函数中srand与rand有什么联系?我只知道用玩srand后在用rand就不随机了,有什么规律吗
2015年01月10日 07点01分 1
level 12
在各种不同编程语言都有rand,srand的函数,以下贴来的解释较容易了解:
rand() 是取虚拟乱数的函式,其回传范围是 [0, RAND_MAX)。
srand() 是设定虚拟乱数产生器的种子
所谓 pseudo random number generator(虚拟乱数产生器),是用数学公式产生「好像」是乱数的数字序列。
由於是使用数学方法算出,所以有办法
 1. 重现乱数序列
 2. 预测接下来的乱数序列
当然,够好的虚拟乱数产生器应该要能有效避免 2。
虚拟乱数产生器的运作方式是,先给定一个种子,然后藉由这个种子利用某个公式产生下一个数,并将产生的数重新设为种子。
所以当给定的 seed 相同的时候,接下来的乱数序列都会相同。
这也是为什麼,我们在使用上会先呼叫 srand() 来设定乱数种子,才呼叫 rand() 来取乱数。
否则由於使用的都是预设的种子,每次取到的乱数序列都会相同。
2015年01月11日 16点01分 3
谢谢。不过可不可以把公式告诉我,我研究半天也没明白。
2015年01月12日 00点01分
level 12
如果想知道ruby怎麼写rand,srand,
在官网有源代码文件可看:
http://www.ruby-doc.org/core-2.2.0/Kernel.html
如果觉得乱数不够乱,可用securerandom包才会够乱,
可看看其源代码怎麼写。
乱数的演算法在 @算法吧 可能较多人会有相关的想法或回应。
2015年01月13日 01点01分 4
谢谢
2015年01月13日 05点01分
1