js 生成范围内不重复的随机数。
高洛峰
高洛峰 2016-11-11 15:36:04
0
4
1076

我的需求
在 0 - 3 之间(包含0与3)生成 2 个不重复的随机数。

我的方案
我没有使用do while的方案来做...

function randomNumbers($range){
    return $range[0] + Math.round(Math.random() * ($range[1] -  $range[0]));
}

// 生成随机数字
function generatedRandomNumbers($length,$range){
    var _randomNumber = randomNumbers($range),
        _array = [];
                    
    for(var i = 0;i < $length;i++){
        if(~_array.indexOf(_randomNumber)){
            _randomNumber = randomNumbers($range);
        }
        _array[i] = _randomNumber;
    }
    console.log(JSON.stringify(_array));
};


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(4)
学霸
function randomNum(min, max) {
  return min + Math.round(Math.random() * (max - min));
}

function random2() {
  var rdm1 = randomNum(0, 3);
  var rdm2 = randomNum(0, 3);

  if(rdm1 === rdm2) {
    return random2();
  }
  
  return [rdm1, rdm2];
}


いいねを押す +0
三叔
[0,1,2,3].sort(function(){return Math.random() > 0.5}).slice(0,2)


いいねを押す +0
学霸

昨天也看到了一个类似的问题,处理的不是很好,但是可以得到结果。

var x, y, arr=[];
for(x=0; x


いいねを押す +0
三叔


你这个是小范围的,所以很简单,一句话

[0,1,2,3].sort(() => Math.random() - 0.5).slice(0,2)


いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート