![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 206 Pomógł: 3 Dołączył: 18.08.2011 Skąd: Chrzanów Ostrzeżenie: (0%) ![]() ![]() |
Cześć.
Mam mały problem z losowaniem liczb, ale może zacznę od przykładu, żeby było prościej. A więc mam taką tablice: i chciałbym wylosować z niej jedna z liczb {10,20,30,100}, przy czym chciałbym aby prawdopodobieństwo wylosowania danej liczby wynosiło odpowiednio {0.6,0.3,0.09,0.01} Jedyna koncepcja jaka mi przychodzi do głowy to umieścić w tablicy w tym przypadku 100 elementów i odpowiednio 60 liczb 10, 30 liczb 20 9 liczb 30 1 liczbę 100 dla takiego przykładu wydaje się to być dość proste rozwiązanie problem pojawia się wówczas gdy elementów będzie sporo i gdy prawdopodobieństwo będzie podane z dokładnością do 3 lub więcej elementów. Można zrobić jakiś automat który będzie sam generował taka tablice i z niej losował jakiś index. Pytanie czy nie da się tego zrobić jakoś prościej, lepiej? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Załóżmy, że prawdopodobieństwa wylosowania liczb sumują się do 100.
10 => 60 20 => 30 30 => 9 100 => 1 Losujesz liczbę 1-100. Jeśli wylosowana liczba znajduje się w przedziale 1-60, wylosowałeś 10. Jeśli w przedziale 61-90, wylosowałeś 20. Jeśli w przedziale 91-99, wylosowałeś 30. Jeśli wylosowana liczba to 100, wylosowałeś 100. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 206 Pomógł: 3 Dołączył: 18.08.2011 Skąd: Chrzanów Ostrzeżenie: (0%) ![]() ![]() |
Pomysł całkiem spoko, zaraz się za to wezmę i zobaczymy co z tego wyjdzie
![]() Pozdrawiam. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 675 Pomógł: 286 Dołączył: 15.06.2009 Skąd: Wieliczka Ostrzeżenie: (0%) ![]() ![]() |
możesz też przemnożyć wszystkie prawdopodobieństwa przez wielokrotność 10, tak, aby były liczbami całkowitymi
wyjdzie Ci wtedy: następnie tworzysz nową tablicę, do której ładujesz odpowiedni 60 dziesiątek, 30 dwudziestek, 9 trzydziestek i 1 setkę, następnie losujesz element z tej tablicy ![]() |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 206 Pomógł: 3 Dołączył: 18.08.2011 Skąd: Chrzanów Ostrzeżenie: (0%) ![]() ![]() |
Załóżmy, że prawdopodobieństwa wylosowania liczb sumują się do 100. 10 => 60 20 => 30 30 => 9 100 => 1 Losujesz liczbę 1-100. Jeśli wylosowana liczba znajduje się w przedziale 1-60, wylosowałeś 10. Jeśli w przedziale 61-90, wylosowałeś 20. Jeśli w przedziale 91-99, wylosowałeś 30. Jeśli wylosowana liczba to 100, wylosowałeś 100. znalazłem rozwiązanie o którym pisał sowiq http://forum.php.pl/index.php?showtopic=22868. Myślę że to jest to ![]() Dzięki pozdrawiam. Ten post edytował zaajcu 2.01.2013, 14:38:05 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.04.2025 - 04:21 |