首页 新闻 会员 周边 捐助

不重复的随机值

0
悬赏园豆:80 [已解决问题] 解决于 2018-04-24 23:05

使用JavaScript如何获取0-201之间的随机值,并不会重复。

doios的主页 doios | 初学一级 | 园豆:4
提问于:2018-04-24 19:58
< >
分享
最佳答案
0
收获园豆:80
ycyzharry | 高人七级 |园豆:25683 | 2018-04-24 20:05
其他回答(3)
0
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);

使用数组标记是否出现过。
Shendu.CC | 园豆:2138 (老鸟四级) | 2018-04-24 20:06
0

 

 

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 //随机数已经用完
}

 

 

 

幻影gool | 园豆:257 (菜鸟二级) | 2018-04-24 20:09
0
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());
gleox | 园豆:204 (菜鸟二级) | 2018-04-24 23:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册