机器人随机数怎么不重复php
-
在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年前 -
在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年前 -
在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年前