php 随机数 真正,PHP – 伪随机数发生器?

在过去的几天里,我一直在努力寻找一种基于种子在PHP中生成随机数的好方法.就像我相信你们大多数人已经知道的那样,对于某些情况,php rand()方法太随机了,而且我真的需要一个PRNG,它允许我根据种子一遍又一遍地生成相同的序列号.

我已经尝试过使用XORShift PRNG,问题来自于不同的操作系统似乎因为PHP处理位移而产生不同的答案.

我需要某种适用于PHP的算法,它能够生成相当大的数字,因为无论如何我会在它前面放一个零并将它变成一个小的双. (0.RAND)

解决方法:

mt_srand(42);

echo mt_rand(1, 100);

echo mt_rand(1, 100);

echo mt_rand(1, 100);

这会在我的系统上产生序列64,80,96.每次执行此代码时都会这样做.您使用特定数字(此处为42)为生成器播种一次,然后再次调用生成器以生成随机数.

随机数生成器(真正不可预测的随机性)不能播种并产生真正不可预测的随机数.计算机通常无法做到这一点,因为随机性正是他们不做的事情.计算机是确定性的,不能产生真正的随机性.你需要做一些事情,比如测量放射性衰变,以产生真正的随机性.

伪随机数生成器出现在它的表面上以随机行为,但它们不是.它们以一个数字开头,然后对该数字应用确定性数学运算来改变它并产生不同的数字.每次调用生成器时,它将根据其最后一个数字生成一个新数字.因此,PRNG的顺序始终相同.良好的PRNG以这样的方式应用操作,即序列看起来非常随机分布.通常情况下,它们会播放类似于一天中的时间,因此如果您没有明确播种,它们会显得随机.如果你用特定的值为它们播种,它们将产生一个固定的预定数字序列.

标签:php,random,numbers,prng

来源: https://codeday.me/bug/20190528/1174323.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值