Oto jednak inne rzeczy, które należy docenić przed zakodowaniem. Liczby losowe wygenerowane przez C ++ 20 podążają za sekwencją. Istnieje wiele takich sekwencji, więc liczby losowe nie są naprawdę losowe. Użytkownik programu prawie nie będzie w stanie wiedzieć, która sekwencja wybrała programista i jak określić następny numer, gdy funkcja losowa jest wywoływana, w tym samym kodzie.
Każda sekwencja ma numer początkowy. Nasiona jest związane z początkową liczbą sekwencji. Każda sekwencja zależy od nasion i rozkładu sekwencji. Rozkład sekwencji jest profilem sekwencji.
W tym artykule wyjaśniono, jak wypełnić tablicę liczbami losowymi zaczynającymi się od klas: Random_Device, Default_Random_Engine i Uniform_int_distribution. Te klasy znajdują się w losowej bibliotece, którą należy uwzględnić. Szkielet programu wypełniający tablicę 10 elementów, losowymi liczbami, jest następujący:
#włączaćZauważ, że każdy typ arytmetyczny może być używany jako typ elementu dla tablicy. Rozmiar tablicy wynosi 10. Można jednak uzyskać dowolną liczbę liczb losowych.
Silnik i dystrybucja
W tym temacie silnik jest generatorem liczb losowych.
Random_device
To jest klasa, z której obiekty są tworzone. Obiekt z tej klasy to urządzenie, a nie silnik. Potrzebuje generatora, aby był przydatny. Generator może uznać za argument Random_Device.
Default_Random_Engine
Silnik w tym temacie generuje liczby losowe. Istnieją różne silniki, z których może wybrać programista. Należy to wybrać, gdy programista nie jest pewien, który silnik wybrać. To jest klasa, z której obiekty są tworzone. Zakłada obiekt losowego_device jako argument.
mundliform_int_distribution
Istnieje wiele profili dystrybucji sekwencji, z których może wybrać programista. Wybrany do tego artykułu to: Mundliform_int_distribution. Jest to klasa, z której można tworzyć obiekty. Jego konstrukcja przyjmuje silnik jako argument, a także dolne i górne liczby graniczne dla liczb losowych. To właściwie szablon klasowy. Jedną z jego składni konstrukcyjnych jest:
jawne mundury_int_distribution (inttype a, inttype b = numeric_limitsNastępujące trzy oświadczenia działają razem:
Random_device rd;Od 4 do 13 to dziesięć liczb całkowitych, w tym limity dolne i górne. Specjalizacja szablonu dla obiektu dystrybucji, dist, jest int int. Z tego zakresu można wybrać dziesięć różnych liczb losowych (4–13). Zauważ, że argumentem dla ENG () jest Rd (), a nie RD. Należy również zauważyć, że dowolny typ arytmetyczny może być specjalizacją szablonu dla tej konstrukcji dystrybucji.
Z tego kodu, aby uzyskać następną liczbę losową, użyj „Dist (Eng);” .
Produkowanie dziesięciu losowych liczb całkowitych
Poniższy program produkuje dziesięć losowych liczb całkowitych, od 4 do 13 włącznie.
#włączaćDane wyjściowe z komputera autora to:
7 10 4 10 6Niektóre liczby miały miejsce więcej niż raz. Program zaczyna się od włączenia biblioteki iostream do wejścia i wyjścia. Następnie losowa biblioteka jest dołączona do liczb losowych. Następny wiersz jest stwierdzeniem, a nie dyrektywa. Kończy się półkolisem. Nalega, aby każda nazwa, nie poprzedzona „std ::” jest standardową przestrzenią nazw.
Następnie jest główna funkcja C ++. Pierwsze trzy stwierdzenia głównej funkcji zostały wcześniej wyjaśnione. W następnym segmencie kodu Dist (ENG) wysyła następny numer losowy; Oczywiście w zakresie (włącznie), podawany jako argumenty konstruktora dystrybucji.
Wypełnienie tablicy losowymi liczbami
W powyższym kodzie powstało dziesięć losowych liczb z wyrażeniem, Dist (ENG). Wpisano go dziesięć razy. Można go wpisać raz i nazwać dziesięć razy, jeśli wykonane w pętli. Za pętla będzie musiała iterować dziesięć razy. W tej sytuacji liczba losowa zwrotna nie zostanie wysłana do terminala (ekran); zostanie wysłany do następnego miejsca, tablicy. Poniższy program ilustruje to:
#włączaćTym razem wyjście z komputera autora jest:
9 8 12 10 8 10 8 5 4 11Zwróć uwagę, jak zakodowano pierwszą pętlę. Oczywiście można wybrać dowolny zakres, następujący program wykorzystuje zakres od 0 do 100:
#włączaćTym razem wyjście z komputera autora jest:
43 52 52 24 90 81 21 72 33 42Chociaż zasięg ma ponad dziesięć liczb całkowitych, wyprodukowano tylko dziesięć losowych liczb.
Wniosek
Wykonaj następującą procedurę wypełniania tablicy losowymi liczbami: Wygeneruj liczbę losową i umieść w tablicy, jako pierwszy element. Wygeneruj inną liczbę losową i włożyć, jako drugi element. Wygeneruj trzecią liczbę losową i włożyć jako trzeci element. Kontynuuj w ten sposób, aż do osiągnięcia liczby wymaganych liczb losowych. Ważny jest następujący segment kodu:
int arr [10];