Почему мой код генерирует больше редких значений,нежели меньших
у меня есть функция:
randombox(messages) {
const boxes = ['C', 'U', 'R', 'E', 'L'];
const chanche = this.utils
.randomize(0,100)
.toFixed(0);
let win;
switch (true) {
case chanche <= 10 && chanche > 5:
win = boxes[0];
break;
case chanche <= 5 && chanche > 8:
win = boxes[1];
break;
case chanche <= 8 && chanche > 3:
win = boxes[2];
break;
case chanche <= 3 && chanche > 1:
win = boxes[3];
break;
case chanche <= 1:
win = boxes[4];
break;
default:
return;
}
return win;
}
Я прокрутил её 1000 раз и получил кл получения той или иной коробки - результат:
C : 57
U : 0
R: 0
E: 21
L: 31
Рандомайзер:
randomize(min, max) {
return Math.floor(Math.random() * (max - min) + min);
}
Что я делаю не так,и что можно сделать чтобы оно отвечало своему шансу:
C : +- 10
U : +- 5
R: +- 8
E: +- 3
L: +- 1
(за 1000 прокруток)
Ответы (1 шт):
Автор решения: Aziz Umarov
→ Ссылка
Потому что у вас очень замечательные условия
case chanche <= 10 && chanche > 5:
От 5 до 10. То есть только 6,7,8,9,10.
case chanche <= 5 && chanche > 8:
Нет таких чисел.
case chanche <= 8 && chanche > 3:
От 3 до 8 Зайдёт только если попадется от 3 до 5 если исключить 3 не включено то остаётся только 4, 5.
case chanche <= 3 && chanche > 1:
Если 3 или 2.
case chanche <= 1:
Если только 0 или 1.
Ну и подумайте теперь почему.