有一定金额(m)的钱,要求生成 n 个红包,每个红包中的钱数是 1--100的随机数
2014-04-04 17:19
204 查看
<?php
//mt_rand是内部自动更新rand种子,因此保证产生优质均匀的随机数,
//因此可以看到结果也是均匀的在 (1+100)/2=50.5上下浮动
error_reporting(E_ALL);
$arr=array();
//总钱数
$m=1000;
//红包数
$n=20;
//最小钱
$beg=1;
//最大钱
$end=100;
for($i=0;$i<$n;$i++){
//初始化所有红包,避免有的红包一分钱也没有,默认值为1
$arr[$i]=$beg;
}
while(array_sum($arr)<$m){
$pos=mt_rand(0, $n-1);
if($arr[$pos]<$end)
$arr[$pos]++;
}
echo "<pre>";
print_r($arr);
echo "</pre>";
echo "sum:".array_sum($arr);
?>
//mt_rand是内部自动更新rand种子,因此保证产生优质均匀的随机数,
//因此可以看到结果也是均匀的在 (1+100)/2=50.5上下浮动
error_reporting(E_ALL);
$arr=array();
//总钱数
$m=1000;
//红包数
$n=20;
//最小钱
$beg=1;
//最大钱
$end=100;
for($i=0;$i<$n;$i++){
//初始化所有红包,避免有的红包一分钱也没有,默认值为1
$arr[$i]=$beg;
}
while(array_sum($arr)<$m){
$pos=mt_rand(0, $n-1);
if($arr[$pos]<$end)
$arr[$pos]++;
}
echo "<pre>";
print_r($arr);
echo "</pre>";
echo "sum:".array_sum($arr);
?>
相关文章推荐
- 微信红包指定总金额随机生成每个红包金额算法
- 生成n个随机数,要求n个数的和等于100
- 编写一个JAVA程序,创建指定长度的 int 型数组,并生成 100 以内随机数为数组中的每个元素赋值,然后输出数组
- 编写一个Java程序,创建制定长度的int型数组,并生成100以内的随机数为数组的每个元素赋值
- 生成随机数,且每个数一定不相同
- 一个改进的小要求--限定随机数的个数,生成的随机数总和在一定范围内
- 生成一组指定范围内随机数(取50个数字,100到200的随机数字)
- 动态生成数组,随机生成一定范围的随机数,三种常用排序算法
- C++在一定范围内生成不重复随机数序列
- 0-100 之间 生成50个不重复的随机数, 高效执行
- python 生成一定范围内的随机数
- 生成m个不重复的随机数,每个随机数大小不超过n
- 笔试题:生成100个-100到100的随机数,用不保存随机数的方式输出最大值最小值
- 生成一定范围的不重复随机数
- java实现和电脑猜随机数生成1到100
- JAVA生成6个1-8的随机数,要求无重复。
- 随机生成10个1--20之间的随机数,要求不能重复。(for循环解题)
- 按照一定的格式生成一定数量的随机数的例子
- (转)SQL Server当中生成一定范围的随机数
- 随机数生成及微信红包