我需要仅使用数字创建唯一的随机图钉。我需要生产 10,000,000 到 99,999,999 之间。我需要创建 100,000 个图钉
这是我目前使用的代码:
function UniqueRandomNumbersWithinRange($min, $max, $quantity) {
$numbers = range($min, $max);
shuffle($numbers);
return array_slice($numbers, 0, $quantity);
}
print_r( UniqueRandomNumbersWithinRange(10000000,99999999,100000));
此代码在我的服务器使用 50000 个但 100000 个项目时仍然运行正常。你能帮我吗,有没有代码可以在不占用服务器太多内存的情况下产生这么多唯一的数字?
最佳答案
我相信这应该对你有用:
<?php
function UniqueRandomNumbersWithinRange($min, $max, $quantity) {
$i = 0;
$numbers = array();
while( $i <= $quantity ){
$numbers[$i] = mt_rand($min, $max);
$i++;
}
print_r( $numbers );
}
UniqueRandomNumbersWithinRange(10000000,99999999,100000);
?>
根据对我的回答的评论,可能有多个键包含相同的 pin。 此代码将消除重复项,但需要更多的计算时间:
<?php
function UniqueRandomNumbersWithinRange($min, $max, $quantity) {
$i = 0;
$numbers = array();
while( $i <= $quantity ){
$number = mt_rand( $min, $max );
if( !in_array( $number, $numbers ) ){
$numbers[$i] = $number;
$i++;
}
}
print_r( $numbers );
}
UniqueRandomNumbersWithinRange(10000000,99999999,100000);
?>
关于php - 生成从 10000000 到 99999999 的唯一随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26138058/