Załóżmy, że gra oferuje wydarzenie, które po zakończeniu daje nagrodę lub nic. Dokładny mechanizm określania, czy nagroda jest przyznawana, jest nieznany, ale zakładam, że zastosowano generator liczb losowych, a jeśli wynik jest większy niż pewna zakodowana wartość, otrzymasz nagrodę.
Jeśli chcę w zasadzie dokonać inżynierii wstecznej, jaką wartość zastosowali programiści w celu ustalenia, jak często przyznawana jest nagroda (szacunkowo 15–30%), jak obliczyć liczbę potrzebnych próbek?
Zacząłem od sekcji „Estimator prawdziwego prawdopodobieństwa” tutaj: Checking_whether_a_coin_is_fair , ale nie jestem pewien, czy idę właściwą ścieżką. Otrzymywałem wyniki ~ 1000 próbek potrzebne dla maksymalnego błędu 3% przy 95% pewności.
Ostatecznie oto, co próbuję rozwiązać:
- Event nr 1 daje nagrodę 1.0R, X% czasu
- Event nr 2 daje nagrodę 1.4R, Y% czasu
Chciałbym oszacować X i Y wystarczająco dokładnie, aby ustalić, które zdarzenie jest bardziej wydajne. Duże rozmiary próbek stanowią problem, ponieważ mogę uzyskać tylko 1 próbkę co najwyżej 20 minut.
Odpowiedzi:
źródło
Wiem, że jest mniej elegancki, ale musiałem to zasymulować. Nie tylko zbudowałem dość prostą symulację, ale jest ona nieelegancka i wolno działa. Ale to wystarczy. Jedną z zalet jest to, że dopóki niektóre podstawy są prawidłowe, powie mi, kiedy upadnie eleganckie podejście.
Wielkość próbki będzie się zmieniać w zależności od wartości zakodowanej na stałe.
Oto kod:
Z dala od 50%, jak sugeruje kjetil, wydaje się, że wymagane są „nieco mniej obserwacji”.
Myślę, że można uzyskać przyzwoity szacunek rozpowszechnienia przed 400 próbkami i dostosować strategię pobierania próbek w miarę upływu czasu. Nie sądzę, że powinien być impuls na środku, więc możesz podbić N_loops do 10e3 i podnieść „przez” w „my_prev” do 0,001.
źródło
źródło