首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JS:在具有时间循环的区间内获取x个随机数

JS:在具有时间循环的区间内获取x个随机数
EN

Stack Overflow用户
提问于 2017-02-13 17:51:36
回答 1查看 50关注 0票数 0

我正在做一个纸牌游戏,有六套可用的套装,但是可以有2-6个玩家,我只想要数量的西装来匹配玩家的数量。

代码语言:javascript
复制
let players = 4    
const suits = [1, 2, 3, 4, 5, 6]

当然,我想让他们随机出来。

我提出了以下解决方案:

代码语言:javascript
复制
export function getRandomSuits(nrOfPlayers) {
    const rangeMin = 1;
    const rangeMax = 6;
    const amount = nrOfPlayers;
    let nums = [];

    let getRandomNumber = function() {
        return Math.floor((Math.random() * rangeMax) + rangeMin);
    }

    while (nums.length < amount) {
        let nr = getRandomNumber();
        var numberExists = _.indexOf(nums, nr);
        console.log(numberExists);
        if(numberExists < 0) {
            nums.push(nr);
        }
    }

    return nums;
}

我已经有一段时间没有使用“been循环”这个东西了,所以我对它感到不太舒服。

我的问题是:

  1. 这是一个好的做法,还是有更好的解决办法?
  2. 是否有任何性能或其他实际原因,这个解决方案是坏的?
  3. 我是不是想得太多了?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-13 17:57:07

  1. 在我看来,我认为不需要函数getRandomNumber()。尽管如此,这仍取决于人们的喜好。 我会说: 导出函数getRandomSuits(nrOfPlayers) { const rangeMin = 1;const rangeMax = 6;设num= [];while (nums.length < nrOfPlayers) { let ( nr = Math.floor((Math.random() * rangeMax) + rangeMin);var numberExists =_.indexOf(num,nr);if(numberExists < 0) { nums.push(nr);}}返回num;}
  2. 不一定。只是一个清洁和偏好的问题。
  3. 也许?:-)

使用临时数组的第二个方法(稍微好一点):

代码语言:javascript
复制
export function getRandomSuits(nrOfPlayers) {

    const rangeMin = 1;
    const rangeMax = 6;
    var tempNum = [];
    for(i = 0; i <= rangeMax - rangeMin; i++){
        tempNum[i] = rangeMin + i;
    }
    let nums = [];
    while (nums.length < nrOfPlayers) {
        let index = Math.floor(Math.random() * tempNum.length);
        var numberExists = _.indexOf(nums, tempNum[index]);
        if(numberExists < 0) {
            nums.push(tempNum[index]);
            tempNum.splice(tempNum, index));
        }
    }

    return nums;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42210353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档