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

第一种算法,CSDN上别人的想法

$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);

第二种算法,自己想的。

可以在每次取出数据之后将该数据和最后没有获取的数据替换,然后再去没有取得的数据中随机获取值

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));

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值