Я работаю над карточной игрой с шестью доступными костюмами, но может быть 2-6 игроков, и мне нужно только, чтобы количество костюмов соответствовало количеству игроки.JS: получить x количество случайных чисел внутри интервала с циклом while
let players = 4
const suits = [1, 2, 3, 4, 5, 6]
Конечно, я хочу, чтобы они вышли случайным образом.
я придумал следующее решение:
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;
}
Это было некоторое время, так как я использовал «в то время как петля» штуковина, так что я не чувствую себя очень комфортно с ним.
Мои вопросы:
- Это хорошая практика, или есть лучшее решение?
- Есть ли какие-либо результаты или другие практические причины, почему это решение плохое?
- Я переусердствую?
Вы не должны определить функцию внутри функции – Hum4n01d
Почему ?, Я видел его во многих местах. – Winter
Ваша техника 'while' - хорошая идея, но количество итераций, которые потребуется для поиска X разных чисел, является случайным. Теоретически это может быть бесконечно, если, например, есть только один доступный костюм, и он продолжает ударять по другим номерам. Вы можете контролировать это, используя временный массив, в котором вы перечисляете все доступные костюмы, и как только вы его выбираете, удалите его из этого массива. Таким образом, вы никогда не ударите один и тот же костюм дважды (более эффективно). – blex