机器人随机数怎么不重复php

worktile 其他 101

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在php中生成不重复的随机数可以使用以下方法:

    方法1: 使用rand()函数结合in_array()函数

    “`php
    function generateRandomNumber($min, $max, $count){
    $numbers = array();
    while(count($numbers) < $count){ $randomNumber = rand($min, $max); if(!in_array($randomNumber, $numbers)){ $numbers[] = $randomNumber; } } return $numbers;}$randomNumbers = generateRandomNumber(1, 100, 10);print_r($randomNumbers);```方法2: 使用shuffle()函数```phpfunction generateRandomNumber($min, $max, $count){ $allNumbers = range($min, $max); shuffle($allNumbers); return array_slice($allNumbers, 0, $count);}$randomNumbers = generateRandomNumber(1, 100, 10);print_r($randomNumbers);```方法3: 使用array_rand()函数```phpfunction generateRandomNumber($min, $max, $count){ $allNumbers = range($min, $max); $keys = array_rand($allNumbers, $count); $randomNumbers = array(); if($count > 1){
    foreach($keys as $key){
    $randomNumbers[] = $allNumbers[$key];
    }
    }else{
    $randomNumbers[] = $allNumbers[$keys];
    }

    return $randomNumbers;
    }

    $randomNumbers = generateRandomNumber(1, 100, 10);
    print_r($randomNumbers);
    “`

    以上就是几种生成不重复随机数的方法,你可以根据自己的要求选择适合的方法来生成你需要的随机数。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在PHP中,可以使用rand函数生成随机数。如果想要生成不重复的随机数,可以采用以下几种方式:

    1. 使用数组记录已生成的随机数:首先,创建一个空数组来存储已生成的随机数。然后,在生成随机数之前,使用in_array函数检查该随机数是否已存在于数组中。如果存在,则重新生成一个新的随机数,直到找到一个不存在于数组中的随机数为止。生成的随机数将添加到数组中,以便下一次生成新的随机数时进行判断。

    “`php
    $randomNumbers = array();

    function generateRandomNumber() {
    global $randomNumbers;

    $randomNumber = rand(1, 100); // 生成1到100之间的随机数

    while (in_array($randomNumber, $randomNumbers)) {
    $randomNumber = rand(1, 100);
    }

    $randomNumbers[] = $randomNumber; // 添加到数组中

    return $randomNumber;
    }

    $randomNumber1 = generateRandomNumber();
    $randomNumber2 = generateRandomNumber();
    // …
    “`

    2. 使用shuffle函数打乱数字序列:另一种方法是生成一个数字序列,然后使用shuffle函数对序列进行随机打乱。可以使用range函数创建一个指定范围的数字序列,然后对该序列使用shuffle函数即可。

    “`php
    $numbers = range(1, 100); // 创建数字序列1到100
    shuffle($numbers); // 对数字序列进行随机打乱

    $randomNumber1 = $numbers[0];
    $randomNumber2 = $numbers[1];
    // …
    “`

    3. 使用Fisher-Yates算法:Fisher-Yates算法是一种常用的洗牌算法,用于将一个数组或列表中的元素随机排列。该算法的思想是从最后一个元素开始,每次选择一个随机位置并交换当前元素和随机位置的元素,然后向前移动一位,直到所有元素都被遍历完。

    “`php
    function generateRandomNumbers($min, $max, $count) {
    $numbers = range($min, $max); // 创建数字序列

    for ($i = $max; $i > $max – $count; $i–) {
    $randomIndex = rand(0, $i – 1);
    $temp = $numbers[$randomIndex];
    $numbers[$randomIndex] = $numbers[$i – 1];
    $numbers[$i – 1] = $temp;
    }

    return array_slice($numbers, $max – $count, $count); // 返回随机数
    }

    $randomNumbers = generateRandomNumbers(1, 100, 10); // 生成10个1到100之间的不重复随机数
    “`

    4. 使用mt_rand函数代替rand函数:另一种方法是使用mt_rand函数代替rand函数。mt_rand函数是一个更快且具有更好随机性的随机数函数。

    “`php
    $randomNumber1 = mt_rand(1, 100);
    $randomNumber2 = mt_rand(1, 100);
    // …
    “`

    5. 使用随机数生成器类:可以创建一个自定义的随机数生成器类,该类内部维护一个随机数数组,并提供一个getNext方法来获取下一个不重复的随机数。

    “`php
    class RandomNumberGenerator {
    private $randomNumbers = array();

    public function getNext() {
    $randomNumber = rand(1, 100); // 生成1到100之间的随机数

    while (in_array($randomNumber, $this->randomNumbers)) {
    $randomNumber = rand(1, 100);
    }

    $this->randomNumbers[] = $randomNumber;

    return $randomNumber;
    }
    }

    $generator = new RandomNumberGenerator();

    $randomNumber1 = $generator->getNext();
    $randomNumber2 = $generator->getNext();
    // …
    “`

    无论选择哪种方法,都可以实现在PHP中生成不重复的随机数。具体选择哪种方法取决于项目的要求和实际情况。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在PHP中,可以使用不同的方法生成不重复的随机数。下面是一种常见的方法:

    方法一:使用数组和循环生成不重复的随机数

    “`php
    // 定义生成的随机数数量
    $numberCount = 10;
    // 定义生成的随机数范围
    $minNumber = 1;
    $maxNumber = 100;

    // 初始化结果数组
    $result = [];

    // 生成随机数
    while(count($result) < $numberCount){ $randomNumber = mt_rand($minNumber, $maxNumber); // 判断随机数是否已经存在于结果数组中 if(!in_array($randomNumber, $result)){ $result[] = $randomNumber; }}// 打印结果数组print_r($result);```上面的代码通过使用`mt_rand()`函数生成随机数,并使用`in_array()`函数检测生成的随机数是否已经存在于结果数组中。如果不存在,则将其添加到结果数组中。这样循环生成随机数直到结果数组长度达到指定的数量。最终,打印结果数组。方法二:使用`shuffle()`函数打乱数组```php// 定义生成的随机数数量$numberCount = 10;// 定义生成的随机数范围$minNumber = 1;$maxNumber = 100;// 生成随机数数组$numbers = range($minNumber, $maxNumber);shuffle($numbers);// 截取指定数量的随机数$result = array_slice($numbers, 0, $numberCount);// 打印结果数组print_r($result);```上面的代码使用`range()`函数生成一个范围数组,然后使用`shuffle()`函数将数组中的元素随机打乱。最后,使用`array_slice()`函数截取指定数量的随机数。最终,打印结果数组。以上就是两种在PHP中生成不重复随机数的方法。你可以根据不同的需求选择适合你的方法。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部