Какова вероятность того, что из 25 случайных чисел от 1 до 100 самое высокое появляется более одного раза?


23

Во многих онлайн-играх, когда игроки выполняют сложное задание, иногда дается специальная награда, которую может использовать каждый, кто выполнил задание. обычно это верховое животное (способ транспортировки) или другой предмет тщеславия (предметы, которые не улучшают характеристики персонажа и в основном используются для настройки внешнего вида).

Когда такая награда дается, наиболее распространенный способ определить, кто получает награду, это через случайные числа. В игре обычно есть специальная команда, которая генерирует случайное (вероятно, псевдослучайное, не крипто-безопасное случайное) число от 1 до 100 (иногда игрок может выбрать другой спред, но 100 является наиболее распространенным). Каждый игрок использует эту команду, все игроки могут видеть, кто что бросил, и предмет вручается тому, кто бросает наивысший. В большинстве игр даже есть встроенная система, в которой игроки просто нажимают кнопку, а когда все нажимают на кнопку, игра делает все остальное автоматически.

Иногда некоторые игроки генерируют одинаковое большое количество, и никто не побеждает их. это обычно решается теми игроками, восстанавливающими их числа, пока не будет уникального наибольшего числа.

Мой вопрос заключается в следующем: предположим, что генератор случайных чисел может генерировать любое число от 1 до 100 с одинаковой вероятностью. Предположим, что у вас есть группа из 25 игроков, каждый из которых генерирует 1 число с таким генератором случайных чисел (каждый со своим начальным числом). У вас будет 25 чисел от 1 до 100, без ограничений по количеству игроков, выбрасывающих определенный номер, и без связи между числами. Какова вероятность того, что наибольшее количество сгенерированных генерируется более чем одним игроком? Другими словами, какова вероятность галстука?


7
World of Warcraft, а?
Behacad

1
да, это равномерное случайное число, как указано в вопросе (любое число от 1 до 100 включительно имеет одинаковую вероятность.
Nzall

Хороший вопрос, но мне кажется, что это плохой способ выбрать победителя. Просто перечислите игроков каким-либо образом (можно сказать «имена в алфавитном порядке» или перемешайте его и покажите всем список, или отсортируйте другим способом), и выберите случайное число от 1 до 25. Число, соответствующее игроку, выигрывает.
Тим С.

2
Нубс, используй ДКП!
Давор

2
Предложение: для случайной выборки из U { 1 , , 100 } нам нужно вычислить P ( X ( 24 ) < X ( 25 ) ), используя то, что мы знаем из теории статистики порядка. X1,,X25U{1,,100}P(X(24)<X(25))
Дзен

Ответы:


25

Позволять

  • будет верхним пределом вашего диапазона, х = 100 в вашем случае.xx=100
  • будет общим количеством розыгрышей, n = 25 в вашем случае.nn=25

Для любого числа количество последовательностей из n чисел с каждым числом в последовательности y равно y n . Из этой последовательности число, не содержащее y s, равно ( y - 1 ) n , а число, содержащее один y, равно n ( y - 1 ) n - 1 . Следовательно, число последовательностей с двумя или более y s равно y n - ( y - 1 ) nyxnyyny(y1)nyn(y1)n1y Общее число последовательностей из n чисел с наибольшим числом y, содержащих не менее двух y s, равно x y = 1 ( y n - ( y - 1 ) n - n ( y - 1) ) n - 1 )

yn(y1)nn(y1)n1
nyy
y=1x(yn(y1)nn(y1)n1)=y=1xyny=1x(y1)ny=1xn(y1)n1=xnny=1x(y1)n1=xnny=1x1yn1

Общее количество последовательностей просто . Все последовательности одинаково вероятны, поэтому вероятность равна x n - n y = x - 1 y = 1 y n - 1xn

xnny=1y=x1yn1xn

С я делаю вероятность 0.120004212454.x=100,n=25

x,n

import itertools
import numpy.random as np

def countinlist(x, n):
    count = 0
    total = 0
    for perm in itertools.product(range(1, x+1), repeat=n):
        total += 1
        if perm.count(max(perm)) > 1:
            count += 1

    print "Counting: x", x, "n", n, "total", total, "count", count

def simulate(x,n,N):
    count = 0
    for i in range(N):
        perm = np.randint(x, size=n)
        m = max(perm)
        if sum(perm==m) > 1:
            count += 1
    print "Simulation: x", x, "n", n, "total", N, "count", count, "prob", count/float(N)

x=100
n=25
N = 1000000 # number of trials in simulation

#countinlist(x,n) # only call this for reasonably small x and n!!!!
simulate(x,n,N)
formula = x**n - n*sum([i**(n-1) for i in range(x)])
print "Formula count", formula, "out of", x**n, "probability", float(formula) / x**n

Эта программа выведена

Simulation: x 100 n 25 total 1000000 count 120071 prob 0.120071
Formula count 12000421245360277498241319178764675560017783666750 out of 100000000000000000000000000000000000000000000000000 probability 0.120004212454

2
2000000.11957

xn

Я смоделировал с помощью Perl и получил очень стабильный 0,005. pastebin.com/gb7JMLt6
agweber

xnx=20,n=515600/160000=0.0975x,nи вероятность по формуле I. Мне любопытно узнать, что является источником разногласий между нашими кодами.
TooTone

4
1070.119983,n = 10^7; Total[Boole[Equal @@ (#[[Ordering[#, -2]]])] & /@ x = RandomInteger[{1, 100}, {n, 25}]] / n

3

Я бы подумал, чтобы найти вероятность того, что победитель будет первым

x(251)(x1)2410025y1

Победитель может выиграть с его числом, равным от 2 до 100, поэтому общая вероятность

i=210025(i1)2410025=25i=199i2410025=14+25i=1100i241002514+25124+110024+1+1210024+242161002310025=0.88

10023

10.88=0.12


-3

Похоже, вопрос очень похож на парадокс дня рождения ( http://en.wikipedia.org/wiki/Birthday_problem ), единственное отличие состоит в том, что в этом случае вы не хотите совпадать ни с одним числом, а только с самым большим числом. На первом этапе расчета рассчитывают вероятность того, что не случайные числа перекрываются (п). (см. ссылку выше), а затем вероятность того, что некоторые из 25 чисел перекрываются,1-пгде p - это вероятность, которую вы уже рассчитали. В этом случае вероятность того, что 25 чисел не пересекаются с максимумом, определяется как: пзнак равно1*(1-1/100)*(1-1/100),,,,,,*(1-1/10)знак равно(1-1/100)24 тогда вероятность, которую вы ищете пзнак равно1-пзнак равно1-(1-1/100)24знак равно0,214


Означает ли это, что вероятность составляет 21,4%? кажется довольно высоким, но опять же, парадокс дня рождения имеет такой же удивительный ответ. Спасибо.
Nzall

6
-1 В таком виде этот ответ не верный. Правильный ответ предоставлен @TooTone.
COOLSerdash
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.