@arttstyle
web-макака

Рандомное число в диапазоне с равным шансом выпадения?

какова честная формула вычисления рандомного числа? т.е. допустим диапазон от 0 и до n (n может быть любое число ну например 87)
мне нужна формула которая будет давай равный шанс выпадения любому числу...
например
Math.round(Math.random() * users.length) не подходит т.к. округляет, и допустим у числа 0 и 87 уже в 2 раза меньше шансов чем у остальных
Math.floor(Math.random() * users.length) тоже не подходит т.е. выпадают числа у которых шанс тоже в 2 раза больше...
самое простое решение которое вижу это использовать floor и добавлять к user.lenght+ 0.99
есть еще варианты ???
  • Вопрос задан
  • 159 просмотров
Решения вопроса 2
@slide13
frontend/web-developer
Вот ответ с MDN

function getRandomIntInclusive(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min + 1) + min);
}
Ответ написан
VlasenkoFedor
@VlasenkoFedor
Программист: php, js, go
users.length = 87
const rnd = (Math.random() * (users.length+1)) | 0
рандом от 0 до 87 включительно
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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