Jak generować losowe pływaki w C ++

Jak generować losowe pływaki w C ++

W C ++ można zastosować kilka technik do produkcji losowe pływaki. W przypadku różnych zastosowań, w tym symulacji i wytwarzania liczb losowych do testowania, generowanie może być korzystne losowe pływaki w c++. Ten artykuł przejdzie różne techniki tworzenia losowe pływaki w c++.

Losowe liczby pływaków w C++

Można wygenerować losowe pływaki w C ++ przy użyciu dwóch sposobów.

    • Za pomocą funkcji rand ()
    • Używając std :: mundiform_real_distribution

1: Za pomocą funkcji rand ()

Możemy wygenerować losowe pływaki Za pomocą standardu biblioteki C ++ skraj() funkcjonować. Możemy wygenerować liczbę całkowitą przez skraj() funkcjonować, przekonwertuj na float, a następnie użyj go do generowania losowe pływaki. Aby to zrobić, możemy podzielić generowaną liczbę całkowitą przez dużą liczbę, aby uzyskać liczbę od 0 do 1. A losowy pływak można następnie uzyskać przez pomnożenie tej wartości przez pożądany zakres pływaków. Na przykład do wytworzenia następującego kodu może być używany losowy pływak od 0 do 1:

#włączać
#włączać
#włączać
int main ()

SRAND (czas (null));
dla (int i = 0; i < 10; i++)
float r = rand () / static_cast(Rand_max);
STD :: Cout << r << std::endl;

powrót 0;


W powyższym kodzie skraj() Funkcja służy do generowania 10 losowe wartości zmiennoprzecinkowe od 0 do 1 i czas() Funkcja służy do wysiewania generatora liczb losowych. skraj() Metoda generuje liczbę, która jest całkowicie losowa i leży między 0 a rand_max. Aby zagwarantować, że losowa sekwencja liczb jest unikalna za każdym razem, gdy program jest uruchamiany, SRAND (czas (null)) Funkcja tworzy ziarno generatora liczb losowych w zależności od aktualnego czasu.

Wyjście



Jednak wykorzystanie skraj() technika do generowania losowe pływaki ma wiele ograniczeń. Liczby nie są naprawdę losowe, ponieważ algorytm został wykorzystany do ich wygenerowania. Rozkład generowanych wartości nie jest również jednolity, ponieważ pewne wartości są wytwarzane częściej niż inne.

2: Używanie std :: mundiform_real_distribution

Korzystanie z losowej biblioteki C ++ 11 jest dodatkową metodą produkcji losowe pływaki. Aby uzyskać losowe liczby różnych rodzajów, ta biblioteka oferuje kilka dystrybucji. Możemy użyć mundliform_real_distribution dystrybucja do produkcji losowe pływaki. Ta dystrybucja produkuje losowe pływaki w danym zakresie przy użyciu dwóch argumentów: wartości minimalnej i wartości maksymalnej.

Spójrz na ten kod, aby wygenerować losowe pływaki za pomocą mundliform_real_distribution.

#włączać
za pomocą przestrzeni nazw Std;
int main ()

default_random_engine rand_number;
mundliform_real_distribution rozkład (0.0,5.0);
dla (int i = 1; i < 10; i++)
Cout << distribution(rand_number) << '\n';

powrót 0;


W powyższym kodzie używamy losowej biblioteki, która tworzy 5 Losowy zmiennoprzecinkowy punkt Wartości od 0 do 4. Generuje jednolity rozkład obiektu rozkładu o zakresie [0.0, 5.0] i domyślny obiekt liczby losowej Rand_number. Pętla dla obiektu dystrybucji i silnika Gen do wytworzenia 5 losowych liczb całkowitych, a następnie używa Cout Aby wyświetlić je na konsolę.

Wyjście



Problem z użyciem STD :: mundiform_real_distribution jest to, że nie jesteśmy w stanie wytworzyć żadnych losowych sekwencji, co za każdym razem powoduje podobne sekwencje. Częstotliwość lub prawdopodobieństwo w określonym zakresie można obliczyć za pomocą tego podejścia, ale w ciągu dużej liczby testów.

Wniosek

W C ++ istnieje kilka podejść do produkcji losowe pływaki. Jedna strategia może być bardziej odpowiednia niż inne w zależności od okoliczności. Jednoliczna klasa realnego rozkładu w losowej bibliotece C ++ 11 zapewnia funkcję członka, która generuje jednolicie rozmieszczone wartości ciągłe lub losowe liczby rzeczywiste z zakresu wejściowego. skraj() Funkcja oferuje prostą metodę produkcji losowe pływaki. Wybrana technika ostatecznie będzie zależeć od potrzeb programatora i wymagań ich oprogramowania.