Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как составить формулу?

7STREETRACER7 Ученик (150), закрыт 4 года назад
Всем привет! Я делаю рулетку для одного учебного проекта. Так, вот у меня есть кейс с ценой в 59₽, в нём расположены предметы:
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₽

Как мне найти связь между ценой предметов, ценой кейса и количеством предметов и правильно распределить шанс выпадения для каждого предмета? Я пытался играться с числами и составить какую-нибудь формулу, но у меня ничего не получается и я не знаю как это можно правильно посчитать, чтобы процент выпадения каждого предмета зависел от его цены и от цены кейса.
Лучший ответ
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 ]

соответственно
Остальные ответы
Похожие вопросы