// 随机选择(不重复)
// 返回n个数, 取值是0~(N-1)
function rand_select(N, n) {
if (N < 0 || n < 0 || N < n) return null;
var r = []; // 记录结果
var t = {}; // 记录替换
for (var i = 0; i < n; ++i) {
var pos = N - 1 - i;
var posVal = pos;
if (t[pos] !== undefined) posVal = t[pos];
var p = Math.floor(Math.random() * (pos + 1)); // 随机
var pVal = p;
if (t[p] !== undefined) pVal = t[p];
r.push(pVal); t[p] = posVal;
}
// 排序
r.sort(function (a, b) { return a - b; }); // sort默认是按字符串排序
return r;
}
202

被折叠的 条评论
为什么被折叠?



