php怎么不重复随机数
时间 : 2023-04-24 23:36:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

在 PHP 中,要生成不重复的随机数可以使用循环或递归方式来实现。以下是一些简单的实现方法。

1. 使用数组存储已生成的随机数

可以使用一个数组来存储已经生成的随机数。在生成每个新的随机数时,检查该数组中是否已经存在该随机数,如果已经存在则继续生成新的随机数,否则将其添加到数组中。

```php

$max = 10; // 生成的随机数最大值

$count = 5; // 生成的随机数个数

$numbers = array(); // 存储已生成的随机数

while (count($numbers) < $count) {

$number = mt_rand(1, $max);

if (!in_array($number, $numbers)) {

$numbers[] = $number;

}

}

// 输出生成的随机数

echo implode(', ', $numbers);

2. 使用数组键值存储已生成的随机数

与第一种方法类似,但是使用数组的键值来存储已经生成的随机数,并通过检查数组键是否存在来判断是否已经生成了该随机数。

```php

$max = 10; // 生成的随机数最大值

$count = 5; // 生成的随机数个数

$numbers = array(); // 存储已生成的随机数

while (count($numbers) < $count) {

$number = mt_rand(1, $max);

if (!isset($numbers[$number])) {

$numbers[$number] = true;

}

}

// 输出生成的随机数

echo implode(', ', array_keys($numbers));

3. 在指定范围内随机取值

如果需要生成的随机数个数不是很大,也可以考虑直接生成在指定范围内的随机数,并将其存储在数组中。可以使用 `range()` 函数生成指定范围的数组,再使用 `array_rand()` 函数从该数组中随机取出指定个数的值。

```php

$max = 10; // 生成的随机数最大值

$count = 5; // 生成的随机数个数

// 生成指定范围的数组

$numbers = range(1, $max);

// 从数组中随机取出指定个数的值

$random_keys = array_rand($numbers, $count);

// 输出生成的随机数

foreach ($random_keys as $key) {

echo $numbers[$key] . ' ';

}

以上是几种常见的生成不重复的随机数的方法。根据具体的使用场景和需求,选择合适的方法来实现即可。

在PHP中,如果想要生成不重复的随机数可以有多种方法,下面介绍其中的两种:

1. 使用PHP内置的函数range()和shuffle()

range()函数可以生成一个指定范围内的数组,shuffle()函数可以将数组随机打乱,这样我们就可以保证生成的随机数不重复。下面是一个示例代码:

```php

$numbers = range(1, 100);

shuffle($numbers);

for ($i = 0; $i < 10; $i++) {

echo $numbers[$i] . '<br>';

}

这段代码会生成一个1到100的数组,然后将数组打乱,最后输出前10个元素作为随机数。

2. 使用PHP的mt_rand()和in_array()函数

mt_rand()函数是PHP中的一个内置函数,可以用于生成指定范围内的随机数。in_array()函数可以用于判断一个值是否在数组中。我们可以使用这两个函数来生成一组不重复的随机数。下面是一个示例代码:

```php

$numbers = array();

$i = 0;

while ($i < 10) {

$num = mt_rand(1, 100);

if (!in_array($num, $numbers)) {

array_push($numbers, $num);

$i++;

}

}

foreach ($numbers as $number) {

echo $number . '<br>';

}

这段代码会生成10个1到100之间的随机数,每次生成随机数之后使用in_array()函数判断该随机数是否已经存在于数组中,如果不存在就将该随机数添加到数组中,最终输出结构。