Как получить точный шанс трех переменных? - PullRequest
0 голосов
/ 10 сентября 2018

Я изо всех сил пытаюсь рассчитать предполагаемый шанс пользователя получить предмет. У него есть 15 попыток (которые могут варьироваться), шанс попасть в группу предметов, а затем шанс получить точный предмет. Я вижу два способа сделать это, но ни один не идеален. Пожалуйста, посмотрите:

    int userTries = 15;//Variable holding number of how many tries user has to get an item
    double groupChance = 17;//Chance for user to get any item from the group
    double itemChance = 80;//Chance for user to get specific item from the group

    double simpleChance = groupChance * itemChance * userTries / 100.0;

    int correctionTries = 10000;
    int totalPassed = 0;
    for (int i = 0;i < correctionTries;i++)
    {
        for (int x = 0;x < userTries;x++)
        {
            //Rnd.chance is checking if input chance was rolled, if chance is 17 then this method will return true in 17 tries out of 100
            if (Rnd.chance(groupChance))
                if (Rnd.chance(itemChance))
                {
                    totalPassed++;
                    break;
                }
        }
    }
    double iterationChance = (double) totalPassed / (double) correctionTries * 100.0;
    System.out.println("simple=" + simpleChance + " iteration=" + iterationChance);

Когда groupChance и itemChance низки (например, 1 и 1), то simpleChance дает очень хорошие результаты, но когда шансы высоки (например, 17 и 80), они сильно отличаются от результатов итерации. Проблема с итерационным решением состоит в том, что когда я увеличиваю один из шансов, результат на самом деле будет ниже из-за неудачи в расчетных шансах. Я мог бы увеличить коррекцию, чтобы решить эту проблему, но при повторном вычислении тех же значений вероятность будет другой, и это также окажет значительное влияние на производительность.

Знаете ли вы какой-нибудь способ рассчитать этот шанс с низким влиянием на производительность и хорошей оценкой, которая остается прежней после его повторного расчета?

1 Ответ

0 голосов
/ 10 сентября 2018

I предполагает , что groupChance и itemChance - это вероятности (в процентах) попасть в конкретную группу и получить конкретный элемент в группе ..

Если это так, то вероятность получить этот конкретный предмет составляет groupChance/100 * itemChance/100 = 0.17*0.8 = 0.136 = 13.6%

не ясно также, что simpleChance должно быть =>, чтобы получить определенный элемент хотя бы один раз после 15 попыток ?? ровно один раз после 15 попыток ?? получить это 15 раз подряд?

  • если вы хотите получить его 15 раз подряд, тогда шанс равен (groupChance/100 * itemChance/100 ) ^ userTries = 0.000000000000101
  • если вы хотите получить его хотя бы один раз после 15 попыток, тогда вероятность составляет 1 - ( 1 - groupChance/100 * itemChance/100 ) ^ userTries = 0.88839
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...