我只是想知道,如果你画出 5 位数字,mt_rand() 数字有多独特?
在示例中,我尝试使用此函数获取 500 个随机数的列表,其中一些是重复的。
http://www.php.net/manual/en/function.mt-rand.php http://www.php.net/manual/en/function.mt-rand.php
<?php
header('Content-Type: text/plain');
$errors = array();
$uniques = array();
for($i = 0; $i < 500; ++$i)
{
$random_code = mt_rand(10000, 99999);
if(!in_array($random_code, $uniques))
{
$uniques[] = $random_code;
}
else
{
$errors[] = $random_code;
}
}
/**
* If you get any data in this array, it is not exactly unique
* Run this script for few times and you may see some repeats
*/
print_r($errors);
?>
可能需要多少位数字才能确保循环中抽取的前 500 个随机数是唯一的?
如果数字确实是随机的,那么数字就有可能重复。有多少位数字并不重要——添加更多数字会使重复的可能性大大降低,但它总是有可能的。
您最好检查是否存在冲突,然后循环直到不存在,如下所示:
$uniques = array();
for($i = 0; $i < 500; $i++) {
do {
$code = mt_rand(10000, 99999);
} while(in_array($code, $uniques));
$uniques[] = $code
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)