random number generator c
W tym samouczku szczegółowo opisano użycie funkcji rand () i srand () do generowania liczb losowych w C ++:
Często wymagamy używania liczb losowych w naszej aplikacji do tworzenia symulacji lub gier i innych aplikacji, które wymagają losowych zdarzeń.
Na przykład, w grze w kości, bez zdarzeń losowych, ta sama strona będzie pojawiać się za każdym razem, gdy rzucimy kostką, dając w ten sposób niepożądane rezultaty.
Dlatego konieczne jest, abyśmy mieli do dyspozycji generator liczb losowych. W środowisku fizycznym możemy generować zdarzenia losowe, ale nie jest to możliwe w przypadku komputerów.
=> Przeczytaj serię szkoleń Easy C ++.
Dzieje się tak, ponieważ wszystko w komputerach jest binarne, tj. 0 lub 1 (prawda lub fałsz) i nic pomiędzy. Dlatego komputery zwykle generują przewidywalne zdarzenia i nie są w stanie generować zdarzeń losowych.
Zamiast tego komputery symulują losowość, która jest wykonywana za pomocą generator liczb pseudolosowych (PRNG) . C ++ ma generator liczb losowych i może być używany z wieloma aplikacjami.
W tym samouczku szczegółowo omówimy funkcje / podejścia do generowania liczb losowych w C ++.
Czego się nauczysz:
- Generator liczb pseudolosowych (PRNG) w C ++
- rand i srand Funkcje w C ++
- Różnica między rand () a srand ()
- C ++ Random Float
- C ++ Losowa liczba z zakresu od 0 do 1
- Losowa liczba w C ++ od 1 do 10
- Często Zadawane Pytania
- Wniosek
- rekomendowane lektury
Generator liczb pseudolosowych (PRNG) w C ++
Ogólnie rzecz biorąc, generator liczb pseudolosowych (PRNG) można zdefiniować jako program, który pobiera ziarno lub liczbę początkową i przekształca ją na inną liczbę, która różni się od liczby początkowej za pomocą operacji matematycznych.
Proces ten jest wykonywany wielokrotnie, za każdym razem pobierając ostatnio wygenerowaną liczbę. Za każdym razem wygenerowana liczba nie jest związana z poprzednimi liczbami. W ten sposób ten program jest w stanie wygenerować serię liczb, które pojawiają się losowo.
Język C ++ ma wbudowany generator liczb pseudolosowych oraz dwie funkcje rand () i srand (), które mogą być używane do generowania liczb losowych.
Omówmy szczegółowo te dwie funkcje.
web services pytania do wywiadu w java
rand i srand Funkcje w C ++
srand ()
Prototyp funkcji: void srand (unsigned int seed);
Parametry: seed - Wartość całkowita, która ma być używana jako ziarno przez algorytm generatora liczb pseudolosowych.
Wartość zwracana: Żaden
Opis: Funkcja srand służy do inicjalizacji sekwencji liczb pseudolosowych za pomocą parametru o nazwie „losowe ziarno”. Sprawia, że dane wyjściowe funkcji rand wyglądają losowo. W przeciwnym razie wynik funkcji rand () będzie taki sam za każdym razem, gdy ją wywołamy.
Tak więc, jeśli zasiejemy generator liczb losowych funkcją srand (), uruchomi on generator od punktu, który jest zależny od wartości argumentu przekazanej do srand. Jeśli ustawimy generator liczb losowych z czasem systemowym Na przykład, przed pierwszym wywołaniem funkcji rand (), będzie generować liczby losowe za każdym razem, gdy uruchomimy program.
Zauważ, że zwykle musimy wywołać funkcję srand () tylko raz przed wywołaniem funkcji rand (), a nie za każdym razem, gdy generujemy liczby losowe.
rand ()
Prototyp funkcji: int rand (nieważne);
Parametry: Żaden
Wartość zwracana: Wartość całkowita od 0 do RAND_MAX.
Opis: Funkcja rand () generuje następną liczbę losową w sekwencji. Wygenerowana liczba jest pseudolosową liczbą całkowitą z przedziału od 0 do RAND_MAX. RAND_MAX to stała w nagłówku zwykle ustawiona na wartość 32767.
#include #include #include int main() { std::srand(static_cast(std::time(nullptr))); for (int count=1; count <= 100; ++count) { std::cout << std::rand() << ' '; // display 5 random numbers per row if (count % 5 == 0) std::cout << '
'; } return 0; }
Wynik:
W powyższym programie wygenerowaliśmy pierwsze 100 liczb losowych, podając zegar systemowy jako ziarno funkcji srand. W tym programie użyliśmy zarówno funkcji srand, jak i rand. Zauważ, że ze względu na zegar systemowy jako ziarno, wygenerowane dane wyjściowe będą się różnić za każdym razem, gdy uruchomimy program.
Różnica między rand () a srand ()
rząd() | srand () |
---|---|
Służy do generowania liczb losowych. | Wysyła PRNG używany przez funkcję rand (). |
Wywoływane tyle razy, ile chcemy, aby wygenerować liczby losowe. | Zadzwoniono tylko raz, aby zobaczyć generator liczb losowych. |
Nie przyjmuje żadnych argumentów. | Pobiera parametr używany do inicjowania generatora liczb losowych. |
Zwraca sekwencję liczb losowych przy każdym wywołaniu. | Nie zwraca wartości. |
C ++ Random Float
Funkcja rand (), którą widzieliśmy powyżej, domyślnie zwraca wartość całkowitą, która w niektórych przypadkach może powodować przepełnienie. W ten sposób możemy użyć wartości typu float lub double. Możemy generować liczby losowe typu float, rzutując wartość zwracaną przez funkcję rand () na „float”.
Zatem poniższe wygeneruje liczbę losową z przedziału od 0,0 do 1,0 (łącznie).
cout< Podobnie, poniższa linia wygeneruje liczbę losową z zakresu od 1,2 do 3,4
cout<<1.2 + static_cast (rand()) / ( static_cast (RAND_MAX/(3.4-1.2)));
W naszym kolejnym przykładzie poniżej używamy losowego float do wygenerowania wyniku.
C ++ Losowa liczba z zakresu od 0 do 1
Możemy użyć funkcji srand () i rand () do generowania liczb losowych z zakresu od 0 do 1. Zauważ, że musimy rzutować wynik funkcji rand () na wartość dziesiętną float lub double.
Domyślna wartość zwracana funkcji rand (), tj. Liczba całkowita, jest nieodpowiednia do wyświetlania liczb losowych z zakresu od 0 do 1, które są ułamkami.
Program C ++ podany poniżej wyświetla pierwsze pięć liczb losowych od 0 do 1.
jak grać w obiekty flash Shockwave
#include #include using namespace std; int main() { cout<<'Random numbers generated between 0 and 1:'< Wynik :

Widzimy, że wynikiem programu jest liczba losowa od 0 do 1, która jest ułamkami.
Jeśli nie zarzucimy wartości zwracanej przez funkcję rand () na float lub double, to otrzymamy 0 jako liczbę losową.
Losowa liczba w C ++ od 1 do 10
Następnym przykładem jest generowanie liczb losowych z zakresu od 1 do 10. Poniżej znajduje się program w C ++, który generuje liczby losowe.
Wywołujemy funkcję srand z zegarem systemowym, a następnie wywołujemy funkcję rand z operatorami modułu 10.
#include #include #include using namespace std; int main() { srand(time(0)); // Initialize random number generator. cout<<'Random numbers generated between 1 and 10:'< Wynik:

W powyższym programie generujemy pierwsze 10 liczb losowych z zakresu od 1 do 10. Zauważ, że za każdym razem, gdy program jest uruchamiany, generuje różne zestawy liczb z powodu wywołania funkcji srand.
Często Zadawane Pytania
P # 1) Jaki jest plik nagłówkowy funkcji Random w C ++?
Odpowiedź: Funkcje do generowania liczb losowych, rand i srand są zdefiniowane w< cstdlib > nagłówek C ++.
Pytanie 2) Co to jest Rand_max w C ++?
Odpowiedź: RAND_MAX jest stałą w nagłówku ogólnie ustawioną na wartość 32767. Generator liczb pseudolosowych (PRNG) generuje liczby losowe od 0 do RAND_MAX.
P # 3) Jak działa funkcja losowa?
Odpowiedź: C ++ obsługuje dwie losowe funkcje, tj. srand () i rand (). Funkcja srand () wysiewa generator liczb losowych używany przez funkcję rand (), która generuje sekwencję liczb losowych w zależności od dostarczonego początkowego ziarna.
Q # 4) Jak radzisz sobie z czasem?
Odpowiedź: Funkcja srand wysiewa generator liczb pseudolosowych (PRNG) używany przez funkcję rand (). Standardową praktyką jest używanie wyniku wywołania time (0) jako ziarna. Ta funkcja czasu zwraca wartość, czyli liczbę sekund od godziny 00:00, 1 stycznia 1970 r., UTC (bieżący znacznik czasu UNIX).
W ten sposób wartość nasion zmienia się co sekundę. Stąd za każdym razem, gdy srand jest wywoływany z funkcją czasu, generowany jest nowy zestaw liczb losowych.
Wniosek
W tym samouczku szczegółowo omówiliśmy generowanie liczb losowych. Języki programowania lub generalnie komputery nie generują liczb losowych, ponieważ są zaprojektowane do przewidywania wyników. Dlatego musimy symulować losowość.
Aby zasymulować losowość, używamy generatora liczb pseudolosowych (PRNG), który jest wbudowany w C ++. Zatem używając dwóch funkcji rand () i srand () możemy generować liczby losowe w C ++.
Funkcja srand () służy do dostarczania ziarna do generowania liczb losowych, podczas gdy funkcja rand () generuje następną liczbę losową w sekwencji.
=> Poszukaj całej serii szkoleń C ++ tutaj.
rekomendowane lektury
- Generator liczb losowych w języku C # i generator ciągów losowych w języku C # z przykładami kodu
- Samouczek dotyczący głównych funkcji języka Python z praktycznymi przykładami
- Samouczek potoków w systemie Unix: Potoki w programowaniu w systemie Unix
- Rekursja w C ++
- Funkcje znajomego w C ++
- Polimorfizm w C ++
- Programowanie obiektowe w C ++
- OOP Java: Wprowadzenie do programowania obiektowego w Javie