随机数是不是均匀分布,实践来说话:

function testRand($randFunction, $groupsNumber = 10, $rollsNumber = 200)

$frequencies = array_fill(0, $groupsNumber, 0);

foreach (range(1, $rollsNumber) as $ignored) {

if ($randFunction == 'lcg_value') {

$frequencies[$randFunction() * 10]++;

} else {

$frequencies[$randFunction(0, $groupsNumber - 1)]++;

echo PHP_EOL, "------- results for `$randFunction` -------", PHP_EOL;

$cum = 0;

foreach ($frequencies as $index => $frequency) {

$percent = $frequency * 100 / $rollsNumber;

$cum += $percent;

echo sprintf("%d\t|\t%4d\t%6.2f\t%6.2f", $index, $frequency, $percent, $cum), PHP_EOL;

testRand('rand');

testRand('mt_rand');

testRand('lcg_value');

实测结果如下:

------- results for `rand` -------

0 | 29 14.50 14.50

1 | 18 9.00 23.50

2 | 24 12.00 35.50

3 | 13 6.50 42.00

4 | 26 13.00 55.00

5 | 15 7.50 62.50

6 | 25 12.50 75.00

7 | 22 11.00 86.00

8 | 15 7.50 93.50

9 | 13 6.50 100.00

------- results for `mt_rand` -------

0 | 23 11.50 11.50

1 | 21 10.50 22.00

2 | 22 11.00 33.00

3 | 19 9.50 42.50

4 | 18 9.00 51.50

5 | 21 10.50 62.00

6 | 18 9.00 71.00

7 | 20 10.00 81.00

8 | 21 10.50 91.50

9 | 17 8.50 100.00

------- results for `lcg_value` -------

0 | 15 7.50 7.50

1 | 20 10.00 17.50

2 | 16 8.00 25.50

3 | 18 9.00 34.50

4 | 20 10.00 44.50

5 | 15 7.50 52.00

6 | 28 14.00 66.00

7 | 28 14.00 80.00

8 | 23 11.50 91.50

9 | 17 8.50 100.00

从表中我们看到,同样是随机生成从0到9的10个整数,如果我们用rand函数的话,最少的数只产生了6.5%,最多的产生了14.5%,而如果用mt_rand的话,最少的产生了8.5%,最多的产生了11.5%,而lcg_value最少的产生了7.5%,最多的产生了14%。

显然,mt_rand产生的结果更加『均匀』,lcg_value其次,最不均匀的是rand。

$Money=array(1,2,3,3,4,4,5,5,6,6,7,7,8,8,9,10);$Res=AccordingToMPA($Money,array('1'=>'Admin','2'=>'张三','3'=>'庆庆','4'=>'鹏鹏','5'=>'Admin','6'=>'张三','7'=>'庆庆','8'=>'鹏鹏',));pr... rand 均匀分布 随机数 或矩阵语法Y = rand(n)Y = rand(m,n)Y = rand([m n])Y = rand(m,n,p,...)Y = rand([m n p...])Y = rand(size(A))rands = rand('state')描述rand函数产生由在(0, 1)之间 均匀分布 随机数 组成的数组。Y = rand(n) 返回一个n x n的 随机 矩阵。如果n不是数... 需求是这样的,根据可变参数 $people 来给每个人 随机 分配百分比,条件是人数一定会控制在 3 < N < 100,弱条件是尽量保证每个人分配到的比例在 30% 一下,不会出现极值。写了个简单的分配,但会出现最后一个人会得到很多的情况,并且由于分配区间实际上是 1 - 平均数 之间的百分比,不是严格意义上的 “ 随机 平均分配 ”,求各位大大给个思路,抛砖引玉,不甚感谢。$people =... 我玩得很开心!function rank($input){$output = array();$ranking = $input; sort($ranking); $ranking = array_flip($ranking);$last_val = -1;foreach($ranking as $key => $val){$repetitions = ($val-$last_val-1);... 在WooCommerce中,当客户从购物车结账并提交订单时,如果未处理付款,则订单将设置为“待处理”付款.管理员未收到任何有关的电子邮件.我想向管理员发送电子邮件以获取此类订单.我该怎么做?解决方法:更新2(感谢CélineGarel,从woocommerce_new_order变为woocommerce_checkout_order_processed)当新订单获得待处理状态并自动触发“新订单”... 这篇文章主要介绍了 PHP 实现的简单排列组合算法,结合具体应用实例分析了排列组合算法的实现与使用技巧,需要的朋友可以参考下本文实例讲述了 PHP 实现的简单排列组合算法应用。分享给大家供大家参考,具体如下:一、问题:给你一个40斤的西瓜,给3个人分,有多少种分法?二、 PHP 实现代码:$aa = range(1,40);$bb = array();foreach($aa as $k=>$val){f... 1、把人员分成 20组2、5个实验台1 实验台需要2小时2 实验台需要 3小时3 实验台需要 4小时4 实验台需要 1小时5 实验台需要 5小时3、每个实验台 每个小组必须都做一遍。4、一天做不完,可以推到第二天,第二天完不成可以再推 等等5、第一小组占用实验台 ,第二小组可以选择别的实验台,第三小组等等类推6、假设 2017-11-1日开始假如上午8点开始 12点结束假如下午13点开始 18点结... 直接上代码import java.util.Iterator;import java.util.TreeSet;public class Hongbao {private final int[] moneyList;private final int number;private final int totalMoney;private int cur;public Hongbao(int num... 需求:5000元, 随机 分给10000人,要求每个人最少0.01,最大50;分析:5000元分给10000人,平均每人0.5,如果 随机 0.01-50,那么平均值就在25左右,这就有问题了分化为两种结果:1,在保证剩余人至少能分到0.01的情况下,按照0.01-50进行 随机 分配,这种会每个金额都有,但是绝大部分会只有0.01,结果统计如下:范围概率0.0198.02%(0.01,5]0.209%(5-... 随机 函数Rand()的功能是返回大于等于0而小于1的 均匀分布 随机数 。我们可以利用此函数来生成一个 随机数 ,若要生成A到B之间的 随机 实数,则可以使用公式“=int(Rnad()*(B-A)+A“来生成,下面用这个 随机 函数制作一个简易的 随机 抽号系统。Excel中 随机 函数Rand()使用方法制作一个如下图格式的工作表,可以根据你的爱好添加其它背景图片。在工作表下面的“设置”处设置你需要生成的 随机数 的最大...