首页
Profile
Profile
Profile
Profile
Profile

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日
 
陕ICP备13008705号-1 Chat Gpt Api