QAQ 发表于 2019-7-15 09:14:46

【CRC系列算法隐藏功能】64位PHP7通过CRC32算法计算获取2^32(42亿)个不重复随机数

本帖最后由 QAQ 于 2019-7-7 17:58 编辑



<?php
/*
本程序需要占用较大的物理内存(约256GB),请确认 php.ini 配置为内存不限量以及剩余内存足够,否则将出错。
具体内存与PHP版本有关,请使用 Windows 系统64位PHP7.3.1以上版本的 php.exe 执行,不支持32位。
*/
function dec2bin($dec){
      $bin = null;
      for($i=3;$i >= 0;$i--){
                $bin.= chr($dec >>($i<<3));
      }
      return $bin;
}
$j = array();                //此变量用于检测随机数是否存在
$l = dec2bin(rand(0,0xFFFFFFFF));      //随机数种子
for($i=0;$i<=0xFFFFFFFF;$i++){                //获取2^32个不重复随机数
      $k = crc32($l.dec2bin($i));      //CRC32算法计算出的随机数
      
      if(($i&0xFFFF) == 0){                //每65536个回显一个
                //ksort($j);
                echo "$i $k\r\n";
      }
      if(isset($j[$k])){                //随机数已存在
                echo "Err!";
                echo `cmd /c pause>nul`;
                exit;
      }
      $j[$k] = 1;
}
      unset($j);

      echo "Ok!!";
      echo `cmd /c pause>nul`;
      exit;

?>

1心1亿 发表于 2019-7-15 22:30:30

256GB??? 这是超算用的吗???

小莉今年7岁 发表于 2019-7-16 06:09:58

1心1亿 发表于 2019-7-15 22:30
256GB??? 这是超算用的吗???

6.0以下估计得1T{:10_2986:}

520 发表于 2019-7-16 20:04:51

这注释吓得我心差点跳出来...

520 发表于 2019-7-16 20:04:54

这注释吓得我心差点跳出来...

66大顺 发表于 2019-7-17 05:43:37

页: [1]
查看完整版本: 【CRC系列算法隐藏功能】64位PHP7通过CRC32算法计算获取2^32(42亿)个不重复随机数