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)

相关推荐

  • php对数组内元素进行随机调换的方法

    本文实例讲述了php对数组内元素进行随机调换的方法.分享给大家供大家参考.具体分析如下: 这是一个自定义的php数组元素随机调换的函数,php已经有一个内置的同样功能的函数shuffle($Array),这个代码权当参考 // I noticed that there is already a built-in function that // does the same - so don't use mine ;-) // // --> shuffle($Array); // // http:

  • php 利用array_slice函数获取随机数组或前几条数据

    先给大家说下基本语法: array_slice ( array $array , int $offset [, int $length [, bool $preserve_keys ]] ) array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列. 如果 offset 非负,则序列将从 array 中的此偏移量开始.如果 offset 为负,则序列将从 array 中距离末端这么远的地方开始. 如果给出了 length 并且为正,则序列中

  • php 数组随机取值的简单实例

    array_rand() 在你想从数组中取出一个或多个随机的单元时相当有用.它接受 input 作为输入数组和一个可选的参数 num_req,指明了你想取出多少个单元 - 如果没有指定,默认为 1. array_rand -- 从数组中随机取出一个或多个单元 mixed array_rand ( array input [, int num_req]) array_rand() 在你想从数组中取出一个或多个随机的单元时相当有用.它接受 input 作为输入数组和一个可选的参数 num_req,指

  • php中通过数组进行高效随机抽取指定条记录的算法

    php使用数组array_rand()函数进行高效随机抽取指定条数的记录,可以随机抽取数据库中的记录,适合进行随机展示和抽奖程序. 该算法主要是利用php的array_rand()函数,下面看一下array_rand()函数的主要功能: array_rand-从数组中随机取出一个或多个单元 mixed array_rand(array $input[,int $num_req] ) array_rand()在你想从数组中取出一个或多个随机的单元时相当有用.它接受input作为输入数组和一个可选的

  • php获取随机数组列表的方法

    本文实例讲述了php获取数组中随机数组的实例程序,分享给大家供大家参考.具体实现方法如下: 不用多说,直接贴代码,php中的array_rand很变态,突破了正常人的理解,非常繁琐 例1: 复制代码 代码如下: function create_random_ids( $min,$max,$limited ) {     $_base_ids = range($min,$max);     $_temp_key = array_rand ($_base_ids,min(count($_base_i

  • php将字符串随机分割成不同长度数组的方法

    本文实例讲述了php将字符串随机分割成不同长度数组的方法.分享给大家供大家参考.具体分析如下: 这里使用php对字符串在指定的长度范围内进行随机分割,把分割后的结果存在数组里面 function RandomSplit($min, $max, $str){ $a = array(); while ($str != ''){ $p = rand($min, $max); $p = ($p > strlen($str)) ? strlen($str) : $p; $buffer = substr($

  • php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍

    shuffle()定义和用法 shuffle() 函数把数组中的元素按随机顺序重新排列. 若成功,则返回 TRUE,否则返回 FALSE. 注释:本函数为数组中的单元赋予新的键名.这将删除原有的键名而不仅是重新排序. 注释:自 PHP 4.2.0 起,不再需要用 srand() 或 mt_srand() 函数给随机数发生器播种,现已被自动完成. 语法 shuffle(array) 参数 描述 array 必需.规定要使用的数组. 例子 复制代码 代码如下: <?php $my_array = a

  • php生成不重复随机数、数组的4种方法分享

    下面写几种生成不重复随机数的方法,直接上代码吧 复制代码 代码如下: <?php define('RANDOM_MAX', 100); define('COUNT', 10); echo 'max random num: '.RANDOM_MAX, ' ;result count:'.COUNT, '<br/>'; invoke_entry('rand1'); invoke_entry('rand2'); invoke_entry('rand3'); invoke_entry('rand

  • php使用array_rand()函数从数组中随机选择一个或多个元素

    使用array_rand() 函数从数组中随机选出一个或多个元素,并返回. 复制代码 代码如下: array_rand(array,number) 参数 描述 array 必需.规定输入的数组参数. number 可选.默认是 1.规定返回多少个随机的元素. 例子: 复制代码 代码如下: <?php $a=array("a"=>"Dog","b"=>"Cat","c"=>"

  • php数组随机排序实现方法

    本文实例讲述了php数组随机排序实现方法.分享给大家供大家参考.具体实现方法如下: <?php $array = array('A','2','3','4','5','6','7','8','9','10','J','Q','K'); shuffle($array); //随机排序数组 print_r($array); //输出数组 ?> 运行结果如下: Array ( [0] => Q [1] => 3 [2] => 5 [3] => 2 [4] => 10 [

随机推荐