tolik12345
@tolik12345

Как создать массив со случайными числами без повторений?

Добрый вечер.

Стоит задача создать массив с 5-ю случайными, неповторяющимеся числами от 1 до 10. Элементы в массиве должны быть в рандомном порядке.

Мое решение https://codepen.io/tolik12345/pen/pooboaE?editors=0012

Вроде как работает но меня смущает while... подскажите насколько такой подход правильный и может есть более разумный способ реализовать эту задачу?
  • Вопрос задан
  • 2209 просмотров
Решения вопроса 5
sergiks
@sergiks Куратор тега JavaScript
♬♬
создать массив допустимых значений и «вынимать» из него случайные.

const values = [...Array(10)].map((_, i) => i);
const result = [...Array(5)].map(() => values.splice(Math.floor(Math.random() * values.length), 1)[0]);
result // [ 2, 5, 3, 4, 1 ]
Ответ написан
samodum
@samodum
Какой вопрос - такой и ответ
while(true){
	if (arr.length == 5) break;

Засунь условие из if в while. Естественно, с модификацией
Ответ написан
const array = Array.from({ length: 20 }, (v, i) =>
  Math.floor(Math.random() * (10 - 1) + 1 ));
const set = new Set(array);
const result = [...set].slice(0, 5);
console.log(result);


или так
const array = Array.from({ length: 10 }, (v, i) => i)
  .sort((a, b) => 0.5 - Math.random())
  .slice(0, 5);
console.log(array);
Ответ написан
Комментировать
@402d
начинал с бейсика на УКНЦ в 1988
https://stackoverflow.com/questions/2450954/how-to...

возьмите массив [1,2,3, .. ,10]
перемешайте . возьмите из него первые 5
Ответ написан
Комментировать
coderisimo
@coderisimo Куратор тега JavaScript
уот так уот! ))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы