1种php中生成超大随机数的办法
2011-01-08 阅读 49
这个函数可以生成指定字节数的随机数,例如bcrand(20,0),就可以生成634834这么大的随机数。
function bcrand($n, $s) {
$lowBitMasks = array(0x0000, 0x0001, 0x0003, 0x0007,
0x000f, 0x001f, 0x003f, 0x007f,
0x00ff, 0x01ff, 0x03ff, 0x07ff,
0x0fff, 0x1fff, 0x3fff, 0x7fff);
$r = $n % 16;
$q = floor($n / 16);
$result = '0';
$m = '1';
for ($i = 0; $i < $q; $i++) {
$rand = mt_rand(0, 0xffff);
if (($q - 1 == $i) and ($r == 0) and ($s == 1)) {
$rand |= 0x8000;
}
$result = bcadd(bcmul($m, $rand), $result);
$m = bcmul($m, '65536');
}
if ($r != 0) {
$rand = mt_rand(0, $lowBitMasks[$r]);
if ($s == 1) {
$rand |= 1 << ($r - 1);
}
$result = bcadd(bcmul($m, $rand), $result);
}
return $result;
}
```
php 随机数 超大 生成 获取
更新于 2023年03月28日