gpt4 book ai didi

php - 一个 5 位数的 mt_rand() 数字有多独特?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:54:57 24 4
gpt4 key购买 nike

我只是想知道,如果您抽取 5 位数字,mt_rand() 数字有多独特?在这个例子中,我试图用这个函数得到一个包含 500 个随机数的列表,其中一些是重复的。

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
}

关于php - 一个 5 位数的 mt_rand() 数字有多独特?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23586229/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com