Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Losowanie liczb

Ostatnio zmodyfikowano 2010-05-26 18:49
Autor Wiadomość
matic
Temat założony przez niniejszego użytkownika
Losowanie liczb
» 2010-05-24 18:20:40
Witam!

Czy mógłby mi ktoś wytłumaczyć jak zrobić losowanie liczb z takim założeniem założeniem:

1-10 jest największe prawdopodobieństwo, 11-20 mniejsze, 21-25 jeszcze mniejsze itd.

Z góry dzięki za pomoc.

P.S. Wiem, że ktoś się pewnie zaraz doczepi, że oczekuję gotowego rozwiązania, ale bardzo mi się to przyda, a sam nie mam pojęcia jak to wykonać.
P-17123
DejaVu
» 2010-05-24 19:58:18
Tak samo jak byś to zrobił rachunkiem prawdopodobieństwa.

Możesz tez zrobić np tak: ustal wspólny mianownik, a następnie losuj licznik i na podstawie wartości licznika określaj wylosowaną wartość.
P-17125
jacek_k
» 2010-05-24 19:58:19
Można zrobić np. tak:
C/C++
double P =( rand() % 1000 + 1 ) / 1000.0;
if( P >= 0.5 )
//50% szansy na wylosowanie z przedziału <1,10>
else if( P >= 0.25 )
//25% szansy na wylosowanie z przedziału <11,20>
else if( P >= 0.125 )
//12.5% szansy na wylosowanie z przedziału <21,30>
//... i tak dalej

EDIT: Ech, nie zdążyłem
P-17126
Aithne
» 2010-05-26 17:39:30
Prawie dobrze ;) Lepiej będzie, jak losowanie będzie wyglądać tak:
rand() *( 1.0 /( RAND_MAX + 1.0 ) );
Lepiej dlatego, że to daje nam rozkład jednostajny, a losowanie z kodu wyżej tego nie spełnia ;)

Jak używać randa ;)
P-17178
filipesq
» 2010-05-26 18:49:26
Jest coś takiego jak opcja szukaj. Niedawno miałem ten sam problem...
P-17188
« 1 »
  Strona 1 z 1