首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP ()函数是如何工作的?

PHP ()函数是如何工作的?
EN

Stack Overflow用户
提问于 2018-05-10 15:49:39
回答 2查看 1.5K关注 0票数 0

我想知道PHP ()函数是如何工作的?我的意思是,如果没有任何规则或任何其他随机化函数,这个函数是如何随机化数字的?

例如,我有这样一个数组:

代码语言:javascript
复制
$numbers = array(0,1,2,3,4,5,6,7,8,9);

那么,如果没有rand()、array_rand()等,我如何将这些数字随机化。

基本问题是:

随机化函数是如何工作的?

EN

回答 2

Stack Overflow用户

发布于 2018-05-10 16:04:02

PHP和所有的rand()一样,并不生成真正的随机数据,而是使用一些数学函数来创建看似随机的数据。

方法可能各不相同,但基本原则是:

我们取一个初始值作为“种子”,s。(这可能是当前时间,用户输入“随机”值,甚至从某些熵源中获取真正的随机熵)

然后,我们使用s并将一个函数f应用于它,生成一个新的值s' (s-素数)(这个函数通常是一个模函数或散列函数)。

然后,我们可以无限地重复这个过程,将s'放入f生产s'',等等。

f的这个结果序列是我们的“随机”数字。

但是,希望您认识到,f仍然是一样的,并且在相同的输入下总是会产生相同的输出。

因此,如果我们给它相同的起始种子s,我们将得到相同的s's''s'''的序列。

这就是为什么我们叫他们"Psuedo“随机的原因。如果你不知道开始的种子,也不观察太长时间的序列,它似乎是随机的。但是,如果我们知道f使用的函数和启动种子s,我们就可以预测rand()会产生的每个值。

票数 5
EN

Stack Overflow用户

发布于 2018-05-10 15:56:11

通常,它取决于基于毫秒甚至纳秒的时间。我们可以用一些固定的值多播放种子数,得到一个特定的返回,在大多数情况下是0到1之间,例如:考虑到数字是秒的种子。

代码语言:javascript
复制
numberi+1 = (a * numberi + c) mod m
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50276784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档