Jak używać funkcji SRAND w C ++

Jak używać funkcji SRAND w C ++

W tym artykule będziemy omawiać, w jaki sposób możemy użyć funkcji SRand () w C ++ podczas pisania programów w Ubuntu 20.04. Funkcja srand () to ziarno, którego funkcja Rand () używa do generowania liczb losowych. Obie te funkcje są zdefiniowane w nagłówku STDLIB. Gdy używamy funkcji srand (), aby ustawić ziarno w funkcji rand (), jest ona połączona z funkcją rand (). Funkcja srand () przyjmuje wartość nasion w niepodpisanym typu liczb całkowitych. Wartość nasion jest miejscem początkowym losowego generowania liczby funkcji Rand (), na przykład Srand (5). Funkcja SRAND () nie zwraca żadnej wartości. Domyślna wartość nasion funkcji SRAND jest ustawiona jako „1”. Tak więc, jeśli nie wywołamy funkcji srand () przed funkcją rand (), będzie ona taka sama jak pisanie „SRAND (1)”.

Zrozumienie relacji między funkcją rand () i srand ():

Kiedy używamy funkcji rand () w naszym kodzie, zawsze otrzymujemy tę samą liczbę losową za każdym razem, gdy ją kompilujemy. Spójrzmy na przykład, w którym lepiej zrozumiemy, jak działa funkcja RAND bez Srand ().

Używając funkcji rand () bez funkcji srand () w Ubuntu 20.04:

Otwórz terminal i zrób .plik CPP, pisząc i wykonując polecenie „dotyk” z nazwą pliku i rozszerzeniem .CPP. Następnie zlokalizuj i otwórz .plik CPP. Teraz napisz prosty kod do generowania liczb losowych bez użycia funkcji SRand ().

Plik należy zapisać, a następnie zamykać. Otwórz ponownie terminal i skompiluj plik z tym poleceniem „G ++” wraz z nazwą pliku i rozszerzeniem. Po skompilowaniu wygeneruje to wyjście dla pliku, zwykle wraz z rozszerzeniem „.na zewnątrz.”Teraz wykonaj plik wyjściowy, pisząc to polecenie„./”Wraz z Twoją nazwą pliku wyjściowego

Jak widać w powyższym przykładzie, pierwsze i drugie wyjścia są takie same, ponieważ nie użyliśmy funkcji srand (). Więc nawet jeśli wielokrotnie powtórzymy proces, wyjście będzie takie samo, ponieważ wartość nasion jest domyślnie ustawiona na 1.

Przyjrzymy się, jak funkcja rand () będzie działać z funkcją srand ().

Funkcja rand () za pomocą funkcji srand () w Ubuntu 20.04:

Otwórz terminal i zrób .plik CPP, pisząc i wykonując polecenie „dotyk” z nazwą pliku i rozszerzeniem .CPP. Następnie zlokalizuj i otwórz .plik CPP. Teraz napiszemy kod do generowania liczb losowych i użyjemy funkcji srand () z różnymi wartościami nasion.

Plik należy zapisać, a następnie zamykać. Otwórz ponownie terminal i skompiluj plik z tym poleceniem „G ++” wraz z nazwą pliku i rozszerzeniem. Po skompilowaniu wygeneruje to wyjście dla pliku, zwykle wraz z rozszerzeniem „.na zewnątrz.”Teraz wykonaj plik wyjściowy, pisząc to polecenie„./”Wraz z Twoją nazwą pliku wyjściowego.

Teraz widzimy, że użycie funkcji srand () o różnych wartościach nasion daje inną liczbę losową. Tak więc, jeśli nadal zmieniamy wartość nasion, która jest parametrem funkcji srand (), liczby losowe zawsze będą się od siebie różnić. Wartość nasion jest ustawiana jako „1” w pierwszej linii wyjściowej, więc liczba losowa wygenerowana przez tę wartość nasion wynosi 1804289383, a kiedy zmieniamy wartość nasion na 5, wygenerowana liczba losowa jest teraz zmieniana na 590011675, więc ta zmiana nastąpiła z powodu różnicy wartości nasion.

Po spojrzeniu na ten przykład możemy stwierdzić, że funkcja rand () bez funkcji srand () nie spełnia standardu programu PRNG (pseudo losowego generatora liczb), który generuje liczby losowe zgodnie z akredytacją wartości nasion, W języku C ++. Ten program zawiera funkcje rand () i srand () w celu generowania liczb losowych w programowaniu C ++. Dlatego zawsze powinniśmy używać funkcji srand () podczas korzystania z funkcji rand () do generowania różnych liczb losowych.

Liczba srand () z różnymi wartościami nasion ciągle zmienia wygenerowane liczby losowe, dzięki czemu funkcja rand () jest bardziej wydajna. Ale musimy ciągle zmieniać wartość nasion za każdym razem, ponieważ wartość nasienna musi być podana przed wywołaniem funkcji rand (). Tak więc najlepszym sposobem, aby to robić, jest użycie funkcji czasu (0), która daje dokładny czas w sekundach w niepodpisanej liczbie całkowitej, tworzą tak samo jak parametr funkcji srand (). Tak więc wyjście czasu (0) zawsze będzie się zmieniać, a zatem wyjście funkcji rand () będzie nadal zmieniać każdą sekundę.

Używanie funkcji srand () z czasem (0) jako parametru:

Jak już wcześniej omówiliśmy, że wartość nasion funkcji jest ustawiana jako „1”, więc musimy stale zmieniać wartość ziarna i zanim funkcja rand () zostanie wywołana. Te punkty są niezbędne dla wydajności generowania funkcji losowych, dlatego musimy pomyśleć o takim sposobie, który zmniejsza proces myślowy Kodera i moc przetwarzania urządzenia. Ten problem jest rozwiązany przez funkcję Time () w języku C ++, co daje dokładny czas w danym momencie, w którym wykonujesz zadanie w urządzeniu, znane również jako znacznik czasu. Tak więc, jeśli dodamy funkcję czasu (0) jako parametr funkcji srand (), to znaczy jej wartość nasion, da całkowity czas w sekundach jako liczbę całkowitą do funkcji srand () i będzie się zmieniać na każdym czas, w którym go używamy. Funkcja czasu () jest zdefiniowana w nagłówku CTime, więc będziemy musieli dodać to do naszego kodu. Teraz zaimplementujemy to w naszym kodzie i spróbujemy lepiej zrozumieć, jak funkcja srand () działa z funkcją czas () jako jej parametr.

Używając funkcji srand () z funkcją czasową jako jej parametru w Ubuntu 20.04:

Otwórz terminal i zrób .plik CPP, pisząc i wykonując polecenie „dotyk” z nazwą pliku i rozszerzeniem .CPP. Następnie zlokalizuj i otwórz .plik CPP. Teraz napiszemy kod do generowania liczb losowych i użyjemy funkcji Time (), aby zapewnić różne wartości nasion dla wyraźnych losowo wygenerowanych liczb.

Plik należy zapisać, a następnie zamykać. Otwórz ponownie terminal i skompiluj plik z tym poleceniem „G ++” wraz z nazwą pliku i rozszerzeniem. Po skompilowaniu wygeneruje to wyjście dla pliku, zwykle wraz z rozszerzeniem „.na zewnątrz.”Teraz wykonaj plik wyjściowy, pisząc to polecenie„./”Wraz z Twoją nazwą pliku wyjściowego

Jak widzimy, że po wielokrotnym wykonywaniu plików liczba losowa zmienia się przy każdym wykonaniu, więc osiągnęliśmy wydajność dzięki tej metodzie i będziemy nadal uzyskiwać różne wartości za każdym razem, gdy wykonujemy funkcję srand () z czasem ( 0) Jako jego parametr.

Wniosek:

W tym artykule nauczyliśmy się relacji między funkcją rand () i srand () a tym, w jaki sposób funkcja srand () pomaga funkcji rand () w wydajnym generowaniu liczb losowych za pomocą funkcji czas (). Wdrożyliśmy wszystkie przykłady tych koncepcji w Ubuntu i przedstawiliśmy szczegółowe opracowanie kroków na temat tego, jak je wykonać na Ubuntu 20.04.