Zainicjowanie generatora liczb losowych

Zainicjowanie generatora liczb losowych

Aby liczby losowe były inne przy każdym uruchomieniu programu, należy do generatora liczb losowych wprowadzić zarodek zmieniający się przy każdym wywołaniu programu. Najczęściej stosowanym rozwiązaniem jest wprowadzenie na początku programu jako zarodka aktualnego stanu zegara systemowego:

srand(time(NULL));

Przy użyciu takiej konstrukcji wymagane jest dołączenie pliku nagłówkowego time.h.

Liczby całkowite

Jeżeli losowane mają być liczby całkowite, zupełnie wystarczającym rozwiązaniem jest użycie operatora modulo %. Liczby całkowite z przedziału [a; b] uzyskuje się więc przez:

i = a + rand() % (b - a + 1);

Jeżeli komuś bardzo zależy na wykorzystaniu bardziej znaczących bitów z generatora, zamiast bitów mniej znaczących, których generowanie w bibliotece standardowej jest "niedoskonałe", można wykorzystać rzutowanie:

i = a + (int)(rand() / (RAND_MAX + 1.0) * (b - a + 1));

Stała RAND_MAX jest zdefiniowana w pliku nagłówkowym stdlib.h.

Liczby rzeczywiste

W zależności od oczekiwanego zachowania generatora na krawędziach zadanego przedziału można wyróżnić 4 schematy:

x = (rand() / (float)RAND_MAX) * (b - a) + a;

x = (rand() + 1.0) / (RAND_MAX + 1.0) * (b - a) + a;

x = (rand() / (RAND_MAX + 1.0)) * (b - a) + a;

x = ((rand() + 1.0) / (RAND_MAX + 2.0)) * (b - a) + a;

Oczywiście liczby losowe uzyskane w ten sposób nie pokrywają dokładnie całego przedziału liczb rzeczywistych, bo nie są losowane w sposób ciągły, lecz w odstępach co (b - a) / RANDMAX. Dla większości zastosowań w ramach niniejszego kursu jest to rozwiązanie wystarczające.


Wyszukiwarka

Podobne podstrony:
Generatory liczb losowych
tablica liczb losowych
14 BO 2 1 PP Generowanie Liczb Losowych 2008 s p [v9]
14 BO 2 1 PP Generowanie Liczb Losowych 2008 s p [v9]
generator liczb chybił trafił
14 BO 2 1 PP Generowanie Liczb Losowych 2008 s p [v9]
Generowanie liczb losowych
10 Reprezentacja liczb w systemie komputerowymid 11082 ppt
15 Sieć Następnej Generacjiid 16074 ppt
Solid Edge Generator kół zębatych
37 Generatory Energii Płynu ppt
40 0610 013 05 01 7 General arrangement
md elementy teorii liczb
Eksploatowanie częstościomierzy, generatorów pomiarowych, mostków i mierników RLC
Konspekt; odejmowanie liczb wymiernych
Biomass Fired Superheater for more Efficient Electr Generation From WasteIncinerationPlants025bm 422
Instrukcja generator sinusoidalny

więcej podobnych podstron