加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

在PHP中,如何生成大的伪随机数?

发布时间:2020-05-25 10:08:41 所属栏目:PHP 来源:互联网
导读:我正在寻找一种使用 PHP生成大量随机数的方法,如: mt_rand($lower, $upper); 我看到的越接近是gmp_random(),但是它不允许我指定下边界和上边界只有每个肢体的位数(我不知道是什么). 编辑:Axsuuls的答案似乎非常接近我想要的,非常类似于gmp_random,但似乎只

我正在寻找一种使用 PHP生成大量随机数的方法,如:

mt_rand($lower,$upper);

我看到的越接近是gmp_random(),但是它不允许我指定下边界和上边界只有每个肢体的位数(我不知道是什么).

编辑:Axsuuls的答案似乎非常接近我想要的,非常类似于gmp_random,但似乎只有一个缺陷在一种情况.

假设我不会得到一个随机数:

> 1225468798745475454898787465154

和:

> 1225468798745475454898787465200

所以如果这个函数叫做BigRandomNumber():

BigRandomNumber($length = 31);

这可以很容易地返回到指定边界之外的9999999999999999999999999999999.

如何使用最小/最大边界而不是长度值?

BigRandomNumber('1225468798745475454898787465154','1225468798745475454898787465200');

这应该返回一个随机数1225468798745475454898787465 [154 .. 200].

为了参考,我认为解决方案可能需要利用function supplied in this question.

编辑:上面的帖子被删除,这里是:

function compare($number1,$operator,$number2) {
  $x = bccomp($number1,$number2);

  switch($operator) {
    case '<':
      return -1===$x;
    case '>':
      return 1===$x;
    case '=':
    case '==':
    case '===':
      return 0===$x;
    case '!=':
    case '!==':
    case '<>':
      return 0!==$x;
  }
}
尝试以下:
function BigRandomNumber($min,$max) {
  $difference   = bcadd(bcsub($max,$min),1);
  $rand_percent = bcdiv(mt_rand(),mt_getrandmax(),8); // 0 - 1.0
  return bcadd($min,bcmul($difference,$rand_percent,8),0);
}

数学如下:将最小值和最大值之间的差乘以随机百分比,并将其加到最小值(使用四舍五入到int).

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读