随机选择2(JS)
2016-06-18 18:29
239 查看
调整的思想, 是后面的随机得到的值其实是更后面的值,
所以需要加一个数. 要加的数量是其前面有多少个数.
// 随机选择
function rand_select(N, n){
if (N < 0 || n < 0 || N < n) return null;
var r = [];
// 按可重复随机
for(var i=0; i<n; ++i){
var p = Math.floor(Math.random() * (N-i+1));
r.push(p);
}
// 调整
// 从后向前(避免调整后的值影响比较)
for(var j=r.length-1; j>0; --j){
var p_last=r[j];
// 从后向前(避免调整后的值影响比较)
for(var k=j-1; k>=0; --k){
if(r[k]<=p_last) ++p_last;
}
r[j]=p_last;
}
// 排序
r.sort(function (a, b) { return a - b; });
return r;
}
所以需要加一个数. 要加的数量是其前面有多少个数.
// 随机选择
function rand_select(N, n){
if (N < 0 || n < 0 || N < n) return null;
var r = [];
// 按可重复随机
for(var i=0; i<n; ++i){
var p = Math.floor(Math.random() * (N-i+1));
r.push(p);
}
// 调整
// 从后向前(避免调整后的值影响比较)
for(var j=r.length-1; j>0; --j){
var p_last=r[j];
// 从后向前(避免调整后的值影响比较)
for(var k=j-1; k>=0; --k){
if(r[k]<=p_last) ++p_last;
}
r[j]=p_last;
}
// 排序
r.sort(function (a, b) { return a - b; });
return r;
}
相关文章推荐
- El与Jstl梳理
- EntityFramework中Json序列化的循环引用问题解决--Newtonsoft.Json
- JavaScript 计算笛卡尔积
- C# Json序列化工具--Newtonsoft.Json简介和使用
- 小白教程 Ubuntu 14 Jstorm的搭建与配置
- rapidjson 简单封装
- 观察者模式 详解
- 5、第2篇 JSP语言基础之----JSP基本语法
- 《javascript代码规范整理》
- 【项目总结】 JS设置span的内容
- ajax解析xml数据转换为json
- 【drp 10】JSP页面中model1和model2的区别
- 【drp 10】JSP页面中model1和model2的区别
- (二)JavaScript中的面对对象
- javaScript知识点大全
- javascript 解析json数据获取到item和value
- JavaScript 严格模式 use strict
- javascript如何设置DIV背景色为随机色
- 再次被JS气炸——<script>引用的位置
- json 转换篇