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

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

时间: 2016-12-28

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将字符串随机分割成不同长度数组的方法

本文实例讲述了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 数组随机取值的简单实例

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

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对数组内元素进行随机调换的方法

本文实例讲述了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中通过数组进行高效随机抽取指定条记录的算法

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

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

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

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 $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 [

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

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

javascript数组操作方法小结和3个属性详细介绍

最近一直在用js,好好研究了下js数组的操作,在这里总结一下. 1.数组的创建 复制代码 代码如下: var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度 var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); //创建一个数组并赋值 要说明的是,虽然第二种方法创建数组指定了长度

php数组函数序列之array_keys() - 获取数组键名

array_keys() 定义和用法 array_keys() 函数返回包含数组中所有键名的一个新数组. 如果提供了第二个参数,则只返回键值为该值的键名. 如果 strict 参数指定为 true,则 PHP 会使用全等比较 (===) 来严格检查键值的数据类型. 语法 array_keys(array,value) 参数 描述 array 必需.规定输入的数组. value 可选.指定值的索引(键). strict 可选.与 value 参数一起使用.可能的值: true - 根据类型返回带有

php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。

array_push() 定义和用法 array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度. 该函数等于多次调用 $array[] = $value. 语法 array_push(array,value1,value2...)参数 描述 array 必需.规定一个数组. value1 必需.规定要添加的值. value2 可选.规定要添加的值. 提示和注释 注释:即使数组中有字符串键名,您添加的元素也始终是数字键.(参见例子 2) 注释:如果用 a

php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值

prev() 定义和用法 prev() 函数把指向当前元素的指针移动到上一个元素的位置,并返回该元素值. 如果内部指针已经超过数组的第一个元素之前,函数返回 false. 语法 prev(array)参数 描述 array 必需.规定要使用的数组. 说明 prev() 和 next() 的行为类似,不过它将内部指针倒回一位而不是前移一位. 注意:如果数组包含空的单元,或者单元的值是 0 则该函数碰到这些单元也返回 FALSE.要正确遍历可能含有空单元或者单元值为 0 的数组,请参见 each()

php数组函数序列之array_combine() - 数组合并函数使用说明

array_combine() 定义和用法 array_combine() 函数通过合并两个数组来创建一个新数组,其中的一个数组是键名,另一个数组的值为键值. 如果其中一个数组为空,或者两个数组的元素个数不同,则该函数返回 false. 语法 array_combine(array1,array2) 参数 描述 array1 必需.规定键名. array2 必需.规定值. 提示和注释 注释:两个参数必须有相同数目的元素. 例子 复制代码 代码如下: <?php $a1=array("a&q

php数组函数序列 之array_count_values() 统计数组中所有值出现的次数函数

array_count_values()定义和用法 array_count_values() 函数用于统计数组中所有值出现的次数. 本函数返回一个数组,其元素的键名是原数组的值,键值是该值在原数组中出现的次数. 语法 array_count_values(array) 参数 描述 array 必需.规定输入的数组. 例子 复制代码 代码如下: <?php $a=array("Cat","Dog","Horse","Dog"

php数组函数序列之array_intersect() 返回两个或多个数组的交集数组

array_intersect() 定义和用法 array_intersect() 函数返回两个或多个数组的交集数组. 结果数组包含了所有在被比较数组中,也同时出现在所有其他参数数组中的值,键名保留不变. 注释:仅有值用于比较. 语法 array_intersect(array1,array2,array3...) 参数 描述 array1 必需.与其他数组进行比较的第一个数组. array2 必需.与第一个数组进行比较的数组. array3 可选.与第一个数组进行比较的数组.可以有多个.例子

php数组函数序列之array_values() 获取数组元素值的函数与方法

array_values() 定义和用法 array_keys() 函数返回包含数组中所有键名的一个新数组. 如果提供了第二个参数,则只返回键值为该值的键名. 如果 strict 参数指定为 true,则 PHP 会使用全等比较 (===) 来严格检查键值的数据类型. 语法 array_keys(array,value) 参数 描述 array 必需.规定输入的数组. value 可选.指定值的索引(键). strict 可选.与 value 参数一起使用.可能的值: true - 根据类型返回

php数组函数序列之array_search()- 按元素值返回键名

array_search()定义和用法 array_search() 函数与 in_array() 一样,在数组中查找一个键值.如果找到了该值,匹配元素的键名会被返回.如果没找到,则返回 false. 在 PHP 4.2.0 之前,函数在失败时返回 null 而不是 false. 如果第三个参数 strict 被指定为 true,则只有在数据类型和值都一致时才返回相应元素的键名. 语法 array_search(value,array,strict)参数 描述 value 必需.规定在数组中搜索