【问题标题】:How to generate non-recurring numbers from the range JavaScript如何从 JavaScript 范围内生成非重复数字
【发布时间】:2018-10-07 18:45:42
【问题描述】:

我有一个包含 10 个项目的数组,我使用从 1 到 10 的随机数调用一个随机项目,使用什么来制作从 1 到 10 的随机数,这不会再次发生,当所有 10 都使用时,程序随机停止? code

const num = () => Math.floor(Math.random() * 10);
  const postWord = () => {
    randomWord = word.innerText = words[num()].PL;
  }

  postWord();

  submit.addEventListener("click", function() {
    postWord();
  });

【问题讨论】:

  • 所以你基本上想shuffle这个数组?
  • 是的,这是固定数字列表的随机顺序,而不是随机数字的列表。
  • 我不确定在使用了正好 10 个非重复数字的列表后程序如何“随机停止”。听起来它会在恰好 10 个数字后停止。
  • 这个程序是关于字数的(比如10)。一个词是随机的,你必须翻译它,如果你翻译它,下一个被抽出,当词结束时,游戏结束。但总的来说,在这个项目结束后,我可以做不同的事情。

标签: javascript arrays random unique


【解决方案1】:

您是否考虑过移动数组项?

var range = 10; // global variable

const num = () => Math.floor(Math.random() * range);
  const postWord = () => {
    randomWord = word.innerText = words[num()].PL;
    for (var i=num(); i < range; i++) {
        var temp = words[i];
        words[i] = words[i+1];
        words[i+1] = temp;
    }
    range--;
  }

  postWord();

  submit.addEventListener("click", function() {
    if (range) {
      postWord();
    }
  });

我对 JS 不是很熟悉,但我想我的代码至少可以证明我的观点。

【讨论】:

    猜你喜欢
    • 2013-11-07
    • 2019-01-30
    • 2012-12-03
    • 2012-12-01
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    相关资源
    最近更新 更多