shuffle数组值随便排序函数,php生成多个不重复的

2019-09-30 10:05栏目:网络技术
TAG:

shuffle数组值随意排序函数
*/

本文实例陈诉了shuffle数组值随意排序函数的用法,分享给我们供大家参考。

代码如下:

$typename=20;
$rtitle='tt';
for( $i=0;$i<=20;$i++)
{
 $rtitle_rand = array($typename,$rtitle,$typename);
 shuffle($rtitle_rand);//数组进行自由排序
 echo $rtitle_rand['0'].'<br />';
}

切实实例代码如下:

 代码如下

复制代码 代码如下:

<?php
澳门新葡亰平台官网,//range 是将1到100 列成一个数组
$numbers = range (1,100);
//shuffle 将数组顺序随即打乱
shuffle ($numbers);
//array_slice 取该数组中的某一段
$no=6;
$result = array_slice($numbers,0,$no);
for ($i=0;$i<$no;$i++){
echo $result[$i]."<br>";
}
print_r($result);
?>

$typename=20;
$rtitle='tt';
for( $i=0;$i<=20;$i++)
{
 $rtitle_rand = array($typename,$rtitle,$typename);
 shuffle($rtitle_rand);//数组实行率性排序
 echo $rtitle_rand['0'].'<br />';
}

//range 是将1到42 列成二个数组
$numbers = range (1,42);
//shuffle 将数组顺序随即打乱
shuffle ($numbers);
//array_slice 取该数组中的某一段
$result = array_slice($numbers,0,3);
print_r($result);

仰望本文所述对我们的PHP程序设计有着支持。

方法2

你恐怕感兴趣的稿子:

  • JavaScript中贯彻PHP的打乱数组函数shuffle实例
  • php数组函数类别 之shuffle()和array_rand() 随机函数使用介绍
  • PHP数组函数array_multisort()用法实例深入分析
  • PHP常见数组函数用法小结
  • php数组函数array_key_exists()小结
  • PHP中央银行使array函数新建三个数组
  • php 利用array_slice函数获取随机数组或前几条数据
  • php使用array_search函数完结数组查找的章程
  • PHP数组和explode函数示例总括
  • PHP使用in_array函数检查数组中是不是留存某个值
  • PHP数组相关函数汇总
  • php使用gettimeofday函数重回当前时间并寄放在事关数组里
  • php采访数组最终二个因素的函数end()用法
  • PHP函数shuffle()取数组若干个随机成分的方法深入分析

 代码如下

<?php
$numbers = range (1,20);
srand ((float)microtime()*1000000);
shuffle ($numbers);
while (list (, $number) = each ($numbers)) {
echo "$number ";
}
?>

方法3

用PHP,在1-20间自由发生5个不重复的值,如何是好

 代码如下

<?php
function NoRand($begin=0,$end=20,$limit=5){
$rand_array=range($begin,$end);
shuffle($rand_array);//调用现存的数组随机排列函数
return array_slice($rand_array,0,$limit);//截取前$limit个
}
print_r(NoRand());
?>

或者不shuffle的话

 代码如下

<?php
$tmp=array();
while(count($tmp)<5){
澳门新葡亰平台游戏,$tmp[]=mt_rand(1,20);
$tmp=array_unique($tmp);
}
print join(',',$tmp);
?>

上边都以放空炮了,上面来实在的了,供给如下

有25幅文章拿去投票,三回投票必要选16幅,单个小说一遍投票只好采用三遍。前面有个工程师捅了破绽,忘了把投票入库,有200个顾客产生的投票种类为空。那么你会怎么着补充这几个漏洞?

当然向上级反映意况。但是大家这边研究的是本事,便是索要生成1-25之间的17个不另行的随机数,去填补。具体怎么统一筹算函数呢?将随机数存入数组,再在数组中去除重复的值,就能够生成必然数量的不另行随机数

 代码如下

<?php
/*
* array unique_rand( int $min, int $max, int $num )
* 生成自然数额的不重复随机数
* $min 和 $max: 钦点随机数的范围
* $num: 内定生成数量
*/
function unique_rand($min, $max, $num) {
    $count = 0;
    $return = array();
    while ($count < $num) {
        $return[] = mt_rand($min, $max);
        $return = array_flip(array_flip($return));
        $count = count($return);
    }
    shuffle($return);
    return $return;
}

$arr = unique_rand(1, 25, 16);
sort($arr);

$result = '';
for($i=0; $i < count($arr);$i++)
{
 $result .= $arr[$i].',';
}
$result = substr($result, 0, -1);
echo $result;
?>

程序运转如下:

1 2,3,4,6,7,8,9,10,11,12,13,16,20,21,22,24

补偿几点表明:

•生成随机数时用了 mt_rand() 函数。那个函数生成随机数的平分速度要比 rand() 快四倍。
•去除数组中的重复值时用了“翻翻法”,正是用 array_flip() 把数组的 key 和 value 交流五次。这种做法比用 array_unique() 快得多。

•再次回到数组前,先利用 shuffle() 为数组赋予新的键名,有限扶助键名是 0-n 三番五次的数字。如果不开展此步骤,或者在剔除重复值时形成键名不接二连三,给遍历带来麻烦。

再看一实例

生成0-z那37个字符中的叁个。每一趟调用 getOptions() 方法生成三个字符,它们的存款和储蓄如下:array[0] = 0, array[1] = 1, ……, array[35] = z。

 代码如下

Array (
 [0] => 0
 [1] => 1
 [2] => 2
 [3] => 3
 [4] => 4
 [5] => 5
 [6] => 6
 [7] => 7
 [8] => 8
 [9] => 9
 [10] => a
 [11] => b
 [12] => c
 [13] => d
 [14] => e
 [15] => f
 [16] => g
 [17] => h
 [18] => i
 [19] => j
 [20] => k
 [21] => l
 [22] => m
 [23] => n
 [24] => o
 [25] => p
 [26] => q
 [27] => r
 [28] => s
 [29] => t
 [30] => u
 [31] => v
 [32] => w
 [33] => x
 [34] => y
 [35] => z
)

接下来在0-35之间自由生成二个数作为目录,其实就是在地点数组中随性所欲收取三个数,作为变量 $result 中的第二个字符。这些自由索引随后会被赋值成数组最后三个,它将不会插足下一轮的任性挑选。

 代码如下

<?php
// 生成0123456789abcdefghijklmnopqrstuvwxyz中的三个字符
function getOptions()
{
  $options = array();
  $result = array();
  for($i=48; $i<=57; $i++)
  {
      array_push($options,chr($i)); 
  }
  for($i=65; $i<=90; $i++)
   {
       $j = 32;
       $small = $i + $j;
       array_push($options,chr($small));
 }
  return $options;
}
/*
$e = getOptions();
for($j=0; $j<150; $j++)
{
 echo $e[$j];
}
*/
$len = 10;
// 随机生成数组索引,进而达成自由数
for($j=0; $j<100; $j++)
{
  $result = "";
  $options = getOptions();
  $lastIndex = 35;
  while (strlen($result)<$len)
  {
    // 从0到35中随机取贰个用作目录
  $index = rand(0,$lastIndex);
  // 将随机数赋给变量 $chr
    $chr = $options[$index];
  // 随机数作为 $result 的一有的
    $result .= $chr;
    $lastIndex = $lastIndex-1;
  // 最后二个索引将不会参与下叁次随机抽取奖品
    $options[$index] = $options[$lastIndex];
  }
  echo $result."n";
}
?>

版权声明:本文由澳门新葡亰平台游戏发布于网络技术,转载请注明出处:shuffle数组值随便排序函数,php生成多个不重复的