【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;
?>
256GB??? 这是超算用的吗??? 1心1亿 发表于 2019-7-15 22:30
256GB??? 这是超算用的吗???
6.0以下估计得1T{:10_2986:} 这注释吓得我心差点跳出来... 这注释吓得我心差点跳出来...
页:
[1]