W programie utworzono funkcję, która generuje losowe liczby zgodnie z rozkładem normalnym Gaussa. Przeprowadź eksperyment, w którym sprawdzisz, jaka jest wartość oczekiwana (średnia) zwracanych przez funkcję liczb. W tym celu wygeneruj za jej pomocą n liczb i oblicz ich średnią wartość. Wynik zaokrąglij do jednego miejsca po przecinku.
Aby móc poprawnie sprawdzić swoje rozwiązanie, nie zmieniaj funkcji losowa_liczba_gauss(). Wartość zmiennej mean w funkcji powinna wynosić 4612811918334230528.
Działanie programu przetestuj dla n = 100000.
Specyfikacja problemu:
Dane:
n – liczba naturalna
Wynik:
wartosc_oczekiwana – liczba rzeczywista
R1WA08FkduzAh
Wymyśl pytanie na kartkówkę związane z tematem materiału.
Wymyśl pytanie na kartkówkę związane z tematem materiału.
Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny.
Linia 2. kratka include otwórz nawias ostrokątny random zamknij nawias ostrokątny.
Linia 4. using namespace std średnik.
Linia 6. double losowa podkreślnik liczba podkreślnik gauss otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 7. static unsigned long long mean znak równości 4612811918334230528 średnik.
Linia 8. static default podkreślnik random podkreślnik engine generator średnik.
Linia 9. static normal podkreślnik distribution otwórz nawias ostrokątny double zamknij nawias ostrokątny rozklad otwórz nawias okrągły asterysk reinterpret podkreślnik cast otwórz nawias ostrokątny double asterysk zamknij nawias ostrokątny otwórz nawias okrągły ampersant mean zamknij nawias okrągły przecinek 1 zamknij nawias okrągły średnik.
Linia 10. return rozklad otwórz nawias okrągły generator zamknij nawias okrągły średnik.
Linia 11. zamknij nawias klamrowy.
Linia 13. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 14. double n znak równości 100000 średnik.
Linia 15. double wartosc podkreślnik oczekiwana znak równości 0 kropka 0 średnik.
Linia 17. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny n średnik plus plus i zamknij nawias okrągły otwórz nawias klamrowy.
Linia 18. wartosc podkreślnik oczekiwana plus znak równości losowa podkreślnik liczba podkreślnik gauss otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 19. zamknij nawias klamrowy.
Linia 21. wartosc podkreślnik oczekiwana prawy ukośnik znak równości n średnik.
Linia 23. wartosc podkreślnik oczekiwana znak równości round otwórz nawias okrągły wartosc podkreślnik oczekiwana asterysk 10 zamknij nawias okrągły prawy ukośnik 10 średnik.
Linia 25. cout otwórz nawias ostrokątny otwórz nawias ostrokątny wartosc podkreślnik oczekiwana średnik.
Linia 26. zamknij nawias klamrowy.
#include <iostream>
#include <random>
using namespace std;
double losowa_liczba_gauss() {
static unsigned long long mean = 4612811918334230528;
static default_random_engine generator;
static normal_distribution<double> rozklad(*reinterpret_cast<double*>(&mean), 1);
return rozklad(generator);
}
int main() {
double n = 100000;
double wartosc_oczekiwana = 0.0;
for (int i = 0; i < n; ++i) {
wartosc_oczekiwana += losowa_liczba_gauss();
}
wartosc_oczekiwana /= n;
wartosc_oczekiwana = round(wartosc_oczekiwana * 10) / 10;
cout << wartosc_oczekiwana;
}
31
Ćwiczenie 2
W programie utworzono dwuwymiarową tablicę, która zawiera losowe wektory przesunięcia. Przeprowadź prostą symulację, polegającą na przesuwaniu cząstki o kolejne wektory z tablicy. Wypisz końcową pozycję jako dwie liczby oddzielone znakiem spacji, zaokrąglone do dwóch miejsc po przecinku. Symulację rozpocznij od punktu . Działanie programu przetestuj dla punktu i danej tablicy z wektorami.