javascript - 随机选择的事件结果

标签 javascript string permutation

请帮忙。我对这些事情非常陌生,我面临着提出解决方案的挑战。

我需要一个 JavaScript 代码来帮助我自动选择具有 3 种可能结果的事件的随机结果,例如足球 - 主队、平局或客场获胜。总共有10个事件。每场比赛一次必须有一个结果(可以是主队获胜 (a)、平局 (b) 或客场获胜 (c)),并且必须为 10 场比赛随机选择结果或结果,直到没有其他可能性为止。我尝试在 JavaScript 中使用递归和不同类型的字符串排列方法,但我没有得到它。 我想要的描述可以从上面的链接查看。 谢谢。

我想要的插图: enter image description here

最佳答案

这应该可以做到。我认为评论很清楚,但如果需要解释请告诉我。您还可以设置不同数量的事件和结果数组。

// number of events (length of sequence)
const numEvents = 10;

// possible outcomes
const outcomes = ['a', 'b', 'c'];

// total number of possible permutations
// (number of outcomes to the power of number of events)
const numPermutations = outcomes.length**numEvents;

// permutations indices [0, 1, .., numPermutations - 1]
let permutations = Array(numPermutations).fill(0).map((v, i) => i)

// convert sequence of digits to sequence of outcomes ('012' -> 'a b c')
function sequenceToChars(sequence) {
  return Array.from(sequence).map(i => outcomes[i]).join(' ');
}

// convert permutation index to an outcome sequence (2 -> 'a a c')
function permutationToSequence(permutation) {
  // get the sequence as a number in base of number of outcomes
  const sequence = permutation.toString(outcomes.length).padStart(numEvents, '0')
  return sequenceToChars(sequence)
}

// pick a permutation randomly until no permutations left
for (let i = 0; i < numPermutations; i++) {
  // choose a random index of permutations left
  const rand_idx = Math.floor(Math.random() * permutations.length)

  // remove and return chosen index
  permutation = permutations.splice(rand_idx, 1)[0]

  // convert permutation index to sequence
  const sequence = permutationToSequence(permutation)
  console.log(sequence)
}

关于javascript - 随机选择的事件结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53957822/

相关文章:

javascript - 使用 indexOf 匹配精确的字符串

javascript - 覆盖backbone的 View 函数

c - 如何将 char* 字符串类型中的 "\n"从 ""更改为 0x104567910?

string - Qt tr国际化不适用于主要功能吗?

python - 组合太多

javascript - ReactJS - 如何允许用户只输入整数

javascript - 从内容脚本重定向到 chrome 扩展 URL?

ios - Swift UIPickerView 第一个组件更改第二个组件数据

Python 生成器函数和排列

r - 如何按行和列随机化(或排列)数据帧?