php - 生成从 10000000 到 99999999 的唯一随机数

标签 php random

我需要仅使用数字创建唯一的随机图钉。我需要生产 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/

相关文章:

ios - Objective-C中random()函数源码

javascript - 生成一个无重复数字的随机 4 位数字

PHP错误,无法将图像插入数据库

php - PHP OpenID 上的 HTTP 获取失败

javascript - 矩形范围内的随机标记?

c - OpenMP 任务的随机值生成器错误

php - 如何使用php和mysql获取某个记录的最后插入日期?

php - 根据动态下拉框填充文本框

php - 刷新前显示 DIV

python - 如何以 pythonic 方式选择随机字符?