php 从一个数组中随机的取出若干个不同的数实例

网络编程 2025-03-25 12:31www.168986.cn编程入门

随机从非重复数组中抽取元素:PHP实现方法

在PHP编程中,有时我们需要从一个不重复的数组中随机抽取若干个不同的元素。这看似简单,但实现起来却有一定的难度,尤其是在保证不会重复抽取到已经取出的元素时。今天,我将为大家介绍两种实现方法,希望能对大家有所帮助。

第一种方法:基于CSDN上的思路

这种方法主要是通过一个循环,在每次循环中随机生成一个数组索引,并将该索引对应的元素添加到结果数组中,然后从原数组中移除该元素。循环继续,直到抽取到指定数量的元素。

```php

$num = 0;

$array = array(1, 2, 3, 4, 5, 6, 7, 8, 9);

$arr = array();

$g = 5; // 需要抽取的元素数量

$tag = true;

while ($tag) {

$count = count($array);

$t = rand(0, 1);

if ($t == 1) {

$arr[] = $array[$num];

unset($array[$num]);

}

$num++;

if (count($arr) == $g) {

$tag = false;

}

if ($num == $count) {

$num = 0; // 循环索引

}

}

var_dump($arr); // 输出结果数组

```

第二种方法:自己的思路

这种方法的核心思想是在每次取出数据后,将该数据与未获取的数据进行替换,然后从未获取的数据中随机获取值。这样可以确保每次获取的都是未获取过的数据。

```php

function swap(&$a, &$b) {

$temp = $b;

$b = $a;

$a = $temp;

}

$result = array(); // 结果数组

$src = array(); // 源数组,初始化为需要抽取的元素的范围

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

$src[] = $i + 1;

}

$arr_len = count($src); // 源数组长度

$count = 20; // 需要抽取的元素数量

$index = 0;

while($index < $count) {

$random = rand(0, $arr_len - $index - 1); // 随机生成索引

$result[] = $src[$random]; // 将该索引对应的元素添加到结果数组

swap($src[$random], $src[$arr_len - $index - 1]); // 将该元素与最后一个未获取的元素交换

$index += 1;

}

print_r(json_encode($result)); // 输出结果数组

print_r(json_encode($src)); // 输出源数组,可以看到未被获取的元素被移到了最后面

```

以上两种方法都能有效地实现从非重复数组中随机抽取元素的任务。感谢大家的阅读,希望这些方法能对大家有所帮助。也感谢大家对本站的支持!如果有任何疑问或建议,欢迎留言交流。

上一篇:ASP.NET使用My97DatePicker日期控件实例 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by