我正在寻找一种使用PHP生成大随机数的方法,类似于:
mt_rand($lower, $upper);
我所见过的最接近的函数是gmp_random(),然而它不允许我指定下限和上限,只能指定每个limb的位数(我不知道这是什么)。
编辑:Axsuuls的答案似乎非常接近我想要的,并且与gmp_random非常相似,但在一个场景中存在一个缺陷。
假设我想要获取一个介于以下两个数字之间的随机数:
- 1225468798745475454898787465154
和:
- 1225468798745475454898787465200
因此,如果函数命名为BigRandomNumber():
BigRandomNumber($length = 31);
这样的代码可能会返回超出指定范围的9999999999999999999999999999999。
我应该如何使用最小/最大边界而不是长度值?
BigRandomNumber('1225468798745475454898787465154', '1225468798745475454898787465200');
这应该返回一个在1225468798745475454898787465 [154 .. 200]之间的随机数。
提供参考,我认为解决方案可能需要使用此问题中提供的函数。
编辑:上述帖子已被删除,在此是它:
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;
}
}