生成n个随机数,要求n个数的和等于100
// 生成n个随机数,要求n个数的和等于100
function lessANumber(n, v) {
var i,
s = 0,
r = [],
x = v;
for (i = 1; i < n; i++) {
x = Math.random() * x;
r.push(x.toFixed(0));
s += x;
x = v - s;
}
r.push(x.toFixed(0));
return r;
}
function random(Min,Max){
var Range = Max - Min;
var Rand = Math.random();
return(Min + Math.round(Rand * Range));
}
function randnum(n,max){
var arr = [];
if(max > 0){
for(var i = 0;i<n;i++){
var num = 0;
if(i == (n-1)){
num = max;
}else{
if(max <= 0){
num = max = 0;
}else{
num = random(0,max);
max -= num;
}
}
arr.push(num);
}
}
return arr;
}
function foo($n ,$max = 100){
$array = $zero = $normal = [];
for($i=1;$i<=$n;$i++){
$array[] = mt_rand(0,100);
}
$k = $max / array_sum($array); //求出放大系数k
foreach($array as $key => $val){
$value = floor($val * $k); //直接保留整数,以保证下一步的和肯定<100
if($value<1){
$zero[] = $value;
}else{
$normal[] = $value;
}
}
$sum = array_sum($normal);
$diff = $max - $sum; //这个值肯定<100
if(!empty($zero)){ //如果有为0的值
$count = count($zero);
foreach($zero as $z){
$normal[] = $diff / $count;
}
}else{ //随机分配给一个人
$key = array_rand($normal);
$normal[$key] = $normal[$key]+$diff;
}
unset($array,$zero,$sum,$diff);
return $normal;
}
javascript里的Math.random() 函数, 在php里
function random($min = 0, $max = 1)
{
return $min + mt_rand()/mt_getrandmax()*($max-$min);
}
生成n个随机数,要求n个数的和等于100的更多相关文章
- [转载]C# Random 生成不重复随机数
Random 类 命名空间:System 表示伪随机数生成器,一种能够产生满足某些随机性统计要求的数字序列的设备. 伪随机数是以相同的概率从一组有限的数字中选取的.所选数字并不具有完全的随机性,因为它 ...
- C# Random 生成不重复随机数
命名空间:System 表示伪随机数生成器,一种能够产生满足某些随机性统计要求的数字序列的设备. 伪随机数是以相同的概率从一组有限的数字中选取的.所选数字并不具有完全的随机性,因为它们是用一种确定的数 ...
- JS生成一个种子随机数(伪随机数)
原文链接:https://geniuspeng.github.io/2016/09/12/js-random/ 最近有一个需求,需要生成一个随机数,但是又不能完全随机,就是说需要一个种子seed,se ...
- JAVA中生成指定位数随机数的方法总结
JAVA中生成指定位数随机数的方法很多,下面列举几种比较常用的方法. 方法一.通过Math类 public static String getRandom1(int len) { int rs = ( ...
- 【原创】开源Math.NET基础数学类库使用(14)C#生成安全的随机数
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...
- js 生成m位随机数入门实例
1.根据时间生成m位随机数,最大13位随机数,并且不能保证首位不为0. 例子: function ran(m) { m = m > 13 ? 13 : m; var num = new Date ...
- shell 生成指定范围随机数与随机字符串 .
shell 生成指定范围随机数与随机字符串 分类: shell 2014-04-22 22:17 20902人阅读 评 ...
- random and password 在Linux下生成crypt加密密码的方法,shell 生成指定范围随机数与随机字符串
openssl rand -hex n (n is number of characters) LANG=c < /dev/urandom tr -dc _A-Z-a-z-0-9 | head ...
- C#生成不重复随机数列表
C#生成不重复(随机数 http://www.jbxue.com/tags/suijishu.html)列表实例的代码.例子: ; Random rnd = ; i < ...
随机推荐
- Kong01-Kong 介绍
概述 Kong 是在客户端和(微)服务间转发API通信的API网关,通过插件扩展功能. Kong 的官方网站,https://konghq.com/kong Kong 的官方 Github 站点:ht ...
- python爬虫-携程-eleven参数
携程-eleven分析 一.eleven的位置 通过对旁边栈的分析,它是在另一个js文件中调用的.那个js文件是一个自调用的函数,所以我们可以直接copy下来,用浏览器执行看看 执行运行是会报错的,u ...
- 常用的webpack优化方法
1. 前言 关于webpack,相信现在的前端开发人员一定不会陌生,因为它已经成为前端开发人员必不可少的一项技能,它的官方介绍如下: webpack 是一个模块打包器.webpack的主要目标是将 J ...
- Java多线程-CountDownLatch、CyclicBarrier、Semaphore
上次简单了解了多线程中锁的类型,今天要简单了解下多线程并发控制的一些工具类了. 1. 概念说明: CountDownLatch:相当于一个待执行线程计数器,当计数减为零时表示所有待执行线程都已执行完毕 ...
- javascript canvas 生成图片的方法
javascript canvas 生成图片的方法 先生成base64格式的图片 然后ajax传到后台 写入服务器文件夹即可<pre><!DOCTYPE HTML><ht ...
- 2-了解DBMS
1.DB,DBS,DBMS的区别是什么? 1.1 DB 就是数据库,数据库是存储数据的集合,可理解为多个数据表 1.2 DBS 数据库系统,包括数据库,数据库管理系统和数据库管理人员D ...
- IO类
Java的IO体系分为Input/Output和Reader/Writer两类,区别在于Reader/Writer在读写文本时能自动转换内码.基本上,所有的IO类多是配对的,即有XXXInput,就有 ...
- tap事件封装
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8 ...
- nyoj 23-取石子(一)(博弈)
23-取石子(一) 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:20 submit:33 题目描述: 一天,TT在寝室闲着无聊,和同寝的人玩起了取 ...
- CentOS 7安装图形界面步骤和问题解决方法
CentOS 7图形安装步骤: 首先需要进行必要的图形组件安装--命令为: yum groupinstall "X Window System " yum groupinstall ...