**PHP随机数算法

<?php
$tmp = range(1,30);
print_r(array_rand($tmp,10));
?>

输出:

Array
(
[0] => 6
[1] => 8
[2] => 13
[3] => 16
[4] => 17
[5] => 20
[6] => 21
[7] => 22
[8] => 28
[9] => 29
)

-----------------------------------------

参考:

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

方法一:

复制代码代码如下:

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

时间: 2024-08-09 22:27:13

**PHP随机数算法的相关文章

概率/随机数算法

0-1等概率问题 问题描述 一个随机数产生器以概率P生成0,以概率(1-P)生成1,怎样生成等概率的0和1? 主要思路 如果用这个产生器产生两个位,出现00的概率为P^2,出现01的概率为P(1-P),出现10的概率为P(1-P),而出现11的概率为(1-P)^2.故而可以用10表示1,01表示0,从而保证生成0和1的概率是相同的. 代码实现 int generate01(int (*func)()) { if (func == NULL) return -1; int num1 = -1; i

C语言生成32位和64位随机数算法

C语言生成32位和64位随机数算法 /** * randstd.h * * Standard definitions and types, Bob Jenkins * * 2015-01-19: revised by cheungmine */ #ifndef _RANDSTD_H__ #define _RANDSTD_H__ #ifndef STDIO # include <stdio.h> # define STDIO #endif #ifndef STDDEF # include <

一亿个不重复的随机数算法

最近浏览“程序员论坛”时发现不少好帖,增长了不少知识,现拿其中一则为例与大家共同分享心得. 某人提出一个问题:怎样才能生成一亿个不重复的随机数? 问题表述起来很简单,似乎只要弄明白什么叫随机数以及怎样用电脑生成随机数,就能解决问题. 随机数,个人理解为一定范围内出现的毫无规律的数,比如扔一个骰子,落在桌面上时朝上的一面所表示的数就是随机数,这个数只能在1到6的范围内,但具体是什么数,谁也不能肯定,因为它没有规律.一组不重复的随机数,对扔骰子来说就是扔出六个不一样的数来,再比如洗一次扑克牌,洗完后

Redis源码分析(二十三)--- CRC循环冗余算法和RAND随机数算法

今天开始研究Redis源码中的一些工具类的代码实现,工具类在任何语言中,实现的算法原理应该都是一样的,所以可以借此机会学习一下一些比较经典的算法.比如说我今天看的Crc循环冗余校验算法和rand随机数产生算法. CRC算法全称循环冗余校验算法.CRC校验的基本思想是利用线性编码理论,在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的监督码(既CRC码)r位,并附在信息后边,构成一个新的二进制码序列数共(k+r)位,最后发送出去.在接收端, 则根据信息码和CRC码之间所遵循的规则进

随机数算法

伪随机数: 数学公式:r[i]=(v*r[i-1] + u) mod base p=r[i]/base 代码实现 package mytest; public class MyRandom { /** * r[i]=(v*r[i-1] + u) mod base * p=r[i]/base * @param r */ static double random(double[] r){ double temp1,temp2,temp3,base,u,v,p; base=256.0; u=17; v

scala版本的梅森旋转随机数算法

package xzxz import scala.annotation.tailrec class MersenneTwister(seed: Int) { private val SIZE: Int = 624 private val PERIOD: Int = 397 private val DIFF: Int = SIZE - PERIOD private def isOdd(n: Int): Int = n & 1 private def m32(n: Int): Int = 0x80

HDU - 4712 Hamming Distance(坑爹的随机数算法 + 暴力求解)

Hamming Distance Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 1728    Accepted Submission(s): 680 Problem Description (From wikipedia) For binary strings a and b the Hamming distance is equa

C语言之实现随机数产生算法

随机数,也就是在不同的时刻产生不同的数值.在UNIX操作系统和window的操作系统上,我们知道有一个函数rand,它就是用来产生随机数的函数API接口,那么它的原理如何实现? 如果约定a1=f(seed),an+1=f(an),那么可以得到一个序列a1,a2,a3..an,那么要制作一个伪随机函数rand,只需要让它每调用一次就返回序列的下一个元素就行.其实就是相当于第1次调用rand返回a1,第2次返回a2,-,第n次返回an,这样每次返回的数值都不一样,也就是相当于随机数了.但是其实不是真

寒假 15(前n个数的随机置换的两个算法)(随机数产生)

具体实现过程见substitution of int from 1 to n 随机数算法知识: kitty的随机数算法博客: 蒙特卡洛法:统计实验法,大量模拟求概率,用于不可解析函数,或概率分布,的模拟与计算时 将所求解的问题同一定的概率模型相联系,用电子计算机实现统计模拟或抽样,以获得问题的近似解 蒙特卡罗方法解题过程的主要步骤: a.针对实际问题建立一个简单且便于实现的概率统计模型,使所求的量恰好是该模型的概率分布或数字特征. b.对模型的随机变量建立抽样方法,在计算机上进行模拟测试,抽取足