Elepsis Eclipse
Гений
(64039)
4 года назад
Там не совсем формула нужна... на глаз можно раскидать шансы...
let rates = [
[2500, 0.1],
[1500, 1], // 1 - 0.1, шанс = 0.9%
[1000, 3], // 3 - 1 = 2%
// ...
[30, 90],
[10, 100], // 100 - 90 = 10%
];
let x = Math.random() * 100; // 100 просто для удобства.
let drop = 10; // По умолчанию 10, если что-то пойдет не так.
for( let arr of rates ){
if ( rand < rates[ arr ][ 1 ] ){
drop = rates[ arr ][ 0 ];
break;
}
}
И так, чтобы 2500 * 0.1 + 1500 * 0.9 + 1000 * 2 ...+10 * 10 не превышало 5900 (если не туплю) В любом случае можно в цикле выполнить код пару миллионов раз, убедиться, что держеться в нужных рамках)
_________________
Выбрал массивы, потому что в объекте числовые ключи автоматически сортируются - неудобно было бы с перебором и проверками по возрастанию.
Elepsis EclipseГений (64039)
4 года назад
Там ошибка,
внутри цикла вместо rates[ arr ][ 1 ] должно быть просто
arr[ 1 ] и arr[ 0 ]
соответственно
1 — 10₽
2 — 30₽
3 — 50₽
4 — 60₽
5 — 80₽
6 — 100₽
7 — 140₽
8 — 200₽
9 — 250₽
10 — 400₽
11 — 600₽
12 — 1000₽
13 — 1500₽
14 — 2500₽
Как мне найти связь между ценой предметов, ценой кейса и количеством предметов и правильно распределить шанс выпадения для каждого предмета? Я пытался играться с числами и составить какую-нибудь формулу, но у меня ничего не получается и я не знаю как это можно правильно посчитать, чтобы процент выпадения каждого предмета зависел от его цены и от цены кейса.