关闭

PHP产生不重复随机数的5个方法总结(该文章转自酷笔记http://www.kubiji.cn/topic-id3976.html)

标签: php
508人阅读 评论(0) 收藏 举报

这篇文章主要介绍了PHP产生不重复随机数的5个方法总结,PHP随机数经常在项目中使用,本文总结了网络上的和自己项目中用到的随机数生成方法,需要的朋友可以参考下


无论是Web应用,还是WAP或者移动应用,随机数都有其用武之地。在最近接触的几个小项目中,我也经常需要和随机数或者随机数组打交道,所以,对于PHP如何产生不重复随机数常用的几种方法小结一下(ps:方法1、4、5是我常用的,其余来自网络整理)


方法一:


代码如下: 
<?php 
$numbers = range (1,50); 
//shuffle 将数组顺序随即打乱 
shuffle ($numbers); 
//array_slice 取该数组中的某一段 
$num=6; 
$result = array_slice($numbers,0,$num); 
print_r($result); 
?>
方法二:


代码如下: 
<?php 
$numbers = range (1,20); 
//播下随机数发生器种子,可有可无,测试后对结果没有影响
srand ((float)microtime()*1000000); 
shuffle ($numbers); 
//跳过list第一个值(保存的是索引)
while (list(, $number) = each ($numbers)) { 
echo "$number "; 

?>
方法三:


代码如下: 
<?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()); 
?>


 
上述可以在1-20间随机产生5个不重复的值
方法四:


代码如下: 
<?php 
$tmp=array(); 
while(count($tmp)<5){ 
$tmp[]=mt_rand(1,20); 
$tmp=array_unique($tmp); 

print_r($tmp);
?>
方法五:


代码如下: 
<?php 
$tmp = range(1,30);
print_r(array_rand($tmp,10));
?>
这个可能是比叫简单的了(ps:如果在range中指定了步长,就必须注意array_rand的第二个参数是否超出$tmp的长度)。


PHP提供非常丰富的数组函数,产生随机数大多可以从数组这个角度出发,若你还有方法提供,欢迎给出,文章将持续更新。


原文链接:http://www.kubiji.cn/topic-id3976.html







PHP产生不重复随机数的5个方法总结http://www.kubiji.cn/topic-id3976.html

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

随机产生5个从0到10之间不重复的整数

既然是随机,就必然会用到Math.random(),它能随机产生大于等于0,小于等于1的数字。 我们要的是0到10之间的整数,所以我们将它乘10。(Math.random()*10) ...
  • yidengmingmie
  • yidengmingmie
  • 2016-02-24 11:56
  • 2654

PHP高效生成一个不重复随机数

PHP生成一个不重复随机数组的封装方法
  • llfdhr
  • llfdhr
  • 2016-11-25 09:30
  • 2736

算法:如何高效产生m个n范围内的不重复随机数(m<=n)

算法:如何高效产生m个n范围内的不重复随机数(m<=n)
  • shi0090
  • shi0090
  • 2014-12-02 07:22
  • 5255

PHP获取随机数 http://www.cnblogs.com/hailexuexi/archive/2010/09/03/1817442.html

$FileID=date("Ymd-His") . '-' . rand(100,999);    //$FileID为   20100903-132121-908   这样的的随机数 ?...
  • Moonant
  • Moonant
  • 2013-08-24 10:18
  • 584

微分流形与黎曼几何学习笔记(转自http://blog.sciencenet.cn/home.php?mod=space&uid=81613&do=blog&id=333317)

由于种种原因要恶补一下微分流形和黎曼几何,吸取一下“前辈”们的经验,也希望大家能提供一些更好的经验!   1  自几何佳缘 在这方面我是很有感受的。我整理了一些心得笔记,打算以后给学生上课的时候...
  • hzhaly
  • hzhaly
  • 2011-08-10 20:59
  • 3679

android 源码目录结构详解(源码下载方法:http://www.cnmsdn.com/html/201101/1296289262ID9355.html)

Android 2.1 |-- Makefile |-- bionic (bionic C库) |-- bootable (启动引导相关代码) |-- build (存放系统编译规则及generic等...
  • cn_wing2011
  • cn_wing2011
  • 2011-07-27 10:19
  • 735

一个定期翻译国外Android优质的技术、开源库、软件架构设计、测试等文章的开源项目 http://www.devtf.cn

一个定期翻译国外Android优质的技术、开源库、软件架构设计、测试等文章的开源项目 http://www.devtf.cn  1,409 commits  4 branche...
  • qq906786621
  • qq906786621
  • 2016-01-07 11:45
  • 650

第一天 XHTML CSS基础知识 文章出处:标准之路(http://www.aa25.cn)

欢迎大家学习《十天学会web标准》,也就是我们常说的DIV+CSS。不过这里的DIV+CSS是一种错误的叫法,建议大家还是称之为web标准。 学习本系列教程需有一定html和css基础,也就是指您之...
  • yeahwell
  • yeahwell
  • 2012-12-24 13:54
  • 3591

ubuntu 自添加开机启动程序(一种使ethtool设置永久保存在网络设备中的曲线救国方法) 转自:http://www.groad.net/bbs/read.php?tid-1393.html

他的这个文档虽然是基于9.04的,但我在10.04下配置也是成功的。我要实现的脚本是关于网络配置的,为了方便自己以后使用,也记在这里了。#!/bin/sh #配置网络为100M sudo etht...
  • jubincn
  • jubincn
  • 2011-01-20 10:30
  • 28148

cookie和session的区别的理解(http://www.jz123.cn/text/196.html)以及页面间数据的传递

先说session 对SESSION的争论好象一直没有停止过,不过幺麽能理解SESSION的人应该占90以上。 但还是讲讲,别嫌老~ 有一些人赞成用SESSION,有一些人不赞成。但这个...
  • uestcyao
  • uestcyao
  • 2012-08-10 11:33
  • 2367
    个人资料
    • 访问:828次
    • 积分:23
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:3篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档