使用JavaScript如何获取0-201之间的随机值,并不会重复。
var arr = new Array(202), i=arr.length; while(i--){arr[i] = 0;} function randomFrom(lowerValue,upperValue) { while(true) { var x =Math.floor(Math.random() * (upperValue - lowerValue + 1) + lowerValue); if(arr[x]==0) {arr[x]=1;break;} } } randomFrom(0,201);
使用数组标记是否出现过。
var tmp = [] //初始一个随机数表,防止重复结果 var tmpCount = 0 //已经使用的随机数 function random(){ while(tmpCount < 201){ //随机数没被用完 var rnd = Math.floor(Math.random() * 201) // 0-201随机数 if(!tmp[rnd]){ //如果不存在 tmp[rnd] = 1 tmpCount++ return rnd } } return -1 //随机数已经用完 }
function newRandomGenerator(size) { var array = (function() { var size = size || 202, array = new Array(size), i = array.length; while(i--) array[i] = i; return array; })(); var remain = array.length; return function () { if (remain == 0) return array[0]; var index = Math.floor(Math.random() * remain); remain -= 1; var temp = array[index]; array[index] = array[remain]; array[remain] = temp; return temp; } } var rand = newRandomGenerator(); console.log(rand());