Muszę wystąpić zdarzenie w konfigurowalnym X% z widoków na wszystkie strony.

Chcę się upewnić, że prawidłowo myślę o prawdopodobieństwie.

Poniższy kod uruchamia każdy pojedynczy stronę.

Jeśli chcę zdarzyć, aby wystąpić 99% czasu

do_thing if SecureRandom.random_number(1..100) <= 99 

Jeśli chcę wystąpić zdarzenie 10% czasu

do_thing if SecureRandom.random_number(1..100) <= 10

Wiem, że są subtelne Nuance "Gotchas" w prawdopodobieństwie i chciałem się upewnić, że jest to najlepsze podejście.

0
Tallboy 22 listopad 2020, 23:23

1 odpowiedź

Najlepsza odpowiedź

Twoje rozwiązanie jest w porządku pod względem obliczeń prawdopodobieństwa. Ale skorzystałbym z metody Ruby Kernel#rand, aby zapisać trochę miejsca:

rand * 100 <= 99 lub rand(1..100) <= 99

1
Altivi 23 listopad 2020, 13:01