logo

Rand() i srand() w C++

funkcja Rand(). jest wbudowaną funkcją w C++ STL, która jest zdefiniowana w pliku nagłówkowym . Rand() służy do generowania serii liczb losowych. Liczba losowa jest generowana przy użyciu algorytmu, który daje serię niepowiązanych ze sobą liczb przy każdym wywołaniu tej funkcji. Funkcja Rand() jest używana w C++ do generowania liczb losowych z zakresu [0, RAND_MAX).

RAND_MAX: Jest to stała, której wartość domyślna może się różnić w zależności od implementacji, ale przyjmuje się, że wynosi ona co najmniej 32767.



Składnia Rand()

int rand (void);>

Parametry Rand()

  • Funkcja ta nie przyjmuje żadnych parametrów.

Zwracana wartość Rand()

  • skraj() zwraca liczbę pseudolosową z zakresu [0, RAND_MAX).

Załóżmy, że generujemy 5 liczb losowych w C++ za pomocą funkcji Rand() w pętli, a następnie za każdym razem, gdy kompilujemy i uruchamiamy program, wynik musi być tą samą sekwencją liczb.

Przykład Rand()

C++








// C++ program to demonstrate> // the use of rand()> #include> #include> using> namespace> std;> > int> main()> {> >// This program will create some sequence of> >// random numbers on every program run> >for> (>int> i = 0; i <5; i++)> >cout <<>rand>() <<>' '>;> > >return> 0;> }>

>

bash, jeśli jeszcze
>

Wyjście

1804289383 846930886 1681692777 1714636915 1957747793>

Złożoność funkcji Rand().

Złożoność czasowa i przestrzenna funkcji Rand() są następujące:

JavaScript
    Złożoność czasu: O(1) Złożoność przestrzeni pomocniczej: O(1)

Notatka: Ten program utworzy tę samą sekwencję liczb losowych przy każdym uruchomieniu programu.

Poniższy program jest implementacją funkcji Rand() w celu uzyskania wartości z zakresu od 0 do N-1

C++




// C++ program to demonstrate the> // use of rand() to get value> // in a range of 0 to N-1> #include> #include> using> namespace> std;> > int> main()> {> >int> N = 100;> >// This program will create some sequence of random> >// numbers on every program run within range 0 to N-1> >for> (>int> i = 0; i <5; i++)> >cout <<>rand>() % N <<>' '>;> > >return> 0;> }> > // This code is contributed by Susobhan Akhuli>

>

>

Wyjście

83 86 77 15 93>

Poniższy program jest implementacją funkcji Rand() umożliwiającej uzyskanie wartości od Upper_Bound do Lower_Bound.

C++




// C++ program to demonstrate> // the use of rand() to get value> // in a range of lb to ub> #include> #include> using> namespace> std;> > int> main()> {> >int> lb = 20, ub = 100;> >// This program will create some sequence of random> >// numbers on every program run within range lb to ub> >for> (>int> i = 0; i <5; i++)> >cout << (>rand>() % (ub - lb + 1)) + lb <<>' '>;> > >return> 0;> }> > // This code is contributed by Susobhan Akhuli>

>

przycinanie ciągu JavaScript

>

Wyjście

66 90 38 99 88>

srand()

Funkcja srand() jest wbudowaną funkcją w języku C++ STL, zdefiniowaną w plik nagłówkowy. srand() służy do inicjowania generatorów liczb losowych. Funkcja srand() ustawia punkt wyjścia do utworzenia serii pseudolosowych liczb całkowitych. Jeśli srand() nie zostanie wywołana, ziarno Rand() zostanie ustawione tak, jakby srand(1) zostało wywołane na początku programu. Każda inna wartość dla materiału siewnego ustawia generator na inny punkt początkowy.

Składnia srand()

void srand(  unsigned seed ); OR int  srand( unsigned int seed);>

Zapełnia generator liczb pseudolosowych używany przez funkcję Rand() wartością nasionko.

Parametry

  • nasionko: Zalążek nowej sekwencji liczb pseudolosowych zwracanych przez kolejne wywołania funkcji Rand()

Wartość zwracana

  • Ta funkcja zwraca pseudowygenerowaną liczbę losową.

Notatka: Generator liczb pseudolosowych powinien być inicjowany tylko raz, przed jakimkolwiek wywołaniem funkcji Rand() i na początku programu. Nie należy go wielokrotnie inicjować ani ponownie inicjować za każdym razem, gdy chcesz wygenerować nową partię liczb pseudolosowych.

Standardową praktyką jest użycie wyniku wywołania srand(czas(0)) jako ziarno. Jednak funkcja time() zwraca wartość time_t, która zmienia się za każdym razem, w związku z czym liczba pseudolosowa zmienia się dla każdego wywołania programu.

Rand() i srand() z przykładem

skraj() I srand() porównanie

Przykład srand()

C++




// C++ program to generate random numbers> #include> #include> #include> using> namespace> std;> > int> main()> {> >// This program will create different sequence of> >// random numbers on every program run> > >// Use current time as seed for random generator> >srand>(>time>(0));> > >for> (>int> i = 0; i <4; i++)> >cout <<>rand>() <<>' '>;> > >return> 0;> }>

>

>

gimp usuwający tło
Wyjście

1326865685 1413967981 1967280748 919663823>

Złożoność czasowa : O(N), gdzie N jest liczbą liczb losowych do wygenerowania.

Notatka: Ten program utworzy inną sekwencję liczb losowych przy każdym uruchomieniu programu.

W jaki sposób srand() i Rand() są ze sobą powiązane?

srand() ustawia ziarno, którego Rand używa do generowania liczb losowych. Jeśli nie wywołasz srand przed pierwszym wywołaniem rand, będzie to tak, jakbyś wywołał srand(1) w celu ustawienia wartości początkowej na jeden.
W skrócie, srand() — Ustawia ziarno dla funkcji Rand(). .