Jakie jest prawdopodobieństwo, że spośród 25 liczb losowych od 1 do 100 najwyższa pojawi się więcej niż jeden raz?


23

W wielu grach online, gdy gracze wykonują trudne zadanie, czasami przyznawana jest specjalna nagroda, z której mogą skorzystać wszyscy, którzy ukończyli zadanie. jest to zazwyczaj wierzchowiec (metoda transportu) lub inny przedmiot próżności (przedmioty, które nie poprawiają wydajności postaci i służą głównie do dostosowywania wyglądu).

Gdy taka nagroda jest przyznawana, najczęstszym sposobem ustalenia, kto ją otrzymuje, są liczby losowe. Gra zazwyczaj ma specjalne polecenie, które generuje losową (prawdopodobnie pseudolosową, nie krypto-bezpieczną losową) liczbę od 1 do 100 (czasami gracz może wybrać inny spread, ale 100 jest najczęściej). Każdy gracz używa tego polecenia, wszyscy gracze mogą zobaczyć, kto rzucił, a przedmiot jest przyznawany osobie, która rzuciła najwięcej. Większość gier ma nawet wbudowany system, w którym gracze po prostu naciskają przycisk, a gdy wszyscy naciskają przycisk, gra wykonuje resztę automatycznie.

Czasami niektórzy gracze generują tę samą wysoką liczbę i nikt ich nie pokonuje. jest to zazwyczaj rozwiązywane przez tych graczy, którzy regenerują swoje liczby, dopóki nie będzie unikalnej najwyższej liczby.

Moje pytanie jest następujące: Załóżmy, że generator liczb losowych może wygenerować dowolną liczbę od 1 do 100 z takim samym prawdopodobieństwem. Załóżmy, że masz grupę 25 graczy, z których każdy generuje 1 liczbę za pomocą takiego generatora liczb losowych (każdy z własnym nasieniem). Będziesz miał 25 liczb od 1 do 100, bez ograniczeń, ilu graczy rzuca konkretnym numbderem i bez związku między liczbami. Jaka jest szansa, że ​​najwyższa generowana liczba jest generowana przez więcej niż 1 gracza? Innymi słowy, jakie jest prawdopodobieństwo remisu?


7
World of Warcraft, co?
Behacad

1
tak, jest jednolity losowo, jak stwierdzono w pytaniu (każda liczba od 1 do 100 włącznie ma takie samo prawdopodobieństwo.
Nzall

Dobre pytanie, ale uderza mnie to jako zły sposób na wybór zwycięzcy. Po prostu wypisz graczy w jakiś sposób (możesz powiedzieć „nazwij alfabetycznie” lub przetasuj go i pokaż wszystkim listę lub posortuj w inny sposób) i wybierz losową liczbę od 1 do 25. Liczba odpowiadająca graczowi wygrywa.
Tim S.

2
Noobs, użyj DKP!
Davor

2
Sugestia: biorąc pod uwagę losową próbkę z , musimy obliczyć wykorzystując to, co wiemy z teorii statystyki zamówień. X1,,X25U{1,,100}P(X(24)<X(25))
Zen.

Odpowiedzi:


25

Pozwolić

  • x będzie górną krawędzią twojego zakresu, w twoim przypadku.x=100
  • n będzie całkowitą liczbą losowań, w twoim przypadku.n=25

Dla dowolnej liczby liczba sekwencjiyx liczb z każdą liczbą w sekwencjiy wynosi y n . Z tej sekwencji liczba niezawierająca y s wynosi ( y - 1 ) n , a liczba zawierająca jedno y to n ( y - 1 ) n - 1 . Stąd liczba sekwencji z dwoma lub więcej y s wynosi y n - ( y - 1 ) n - nnyyny(y1)nyn(y1)n1y Łączna liczba sekwencji n liczb o najwyższej liczbie y zawierających co najmniej dwa y s wynosi 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

xn

xnny=1y=x1yn1xn

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

Ten program wyszedł

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

Symulowałem używając Perla i uzyskałem bardzo spójny 0.005. pastebin.com/gb7JMLt6
agweber

xnx=20,n=515600/160000=0.0975x,noraz prawdopodobieństwo wyprowadzone ze wzoru I. Jestem ciekawy, jakie jest źródło nieporozumień między naszym kodem.
TooTone

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

3

Zastanowiłbym się, czy najpierw nie uda mi się znaleźć wyjątkowego zwycięzcy

x(251)(x1)2410025y1

Zwycięzca może wygrać, gdy jego liczba wynosi od 2 do 100, więc całkowite prawdopodobieństwo wynosi

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

10023

10.88=0.12


-3

p1pp=1(11/100)(11/100)......(11/10)=(11/100)24P=1p=1(11/100)24=0.214


czy to oznacza, że ​​prawdopodobieństwo wynosi 21,4%? wydaje się dość wysoki, ale z drugiej strony paradoks urodzinowy ma podobną zaskakującą odpowiedź. dzięki.
Nzall

6
-1 W obecnej formie odpowiedź jest nieprawidłowa. Prawidłowa odpowiedź została udzielona przez @TooTone.
COOLSerdash
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.