• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Liczby losowe w C++11

Object Storage Arubacloud
0 głosów
213 wizyt
pytanie zadane 30 maja 2019 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)
zamknięte 30 maja 2019 przez Jakub 0

Witam, oglądałem ten poradnik: https://www.youtube.com/watch?v=K2nrsQwKmHQ&list=PL5jc9xFGsL8FWtnZBeTqZBbniyw0uHyaH&index=18

Oto mój testowy kod:

#include <iostream>
#include <string>
#include <random>
#include <chrono>
#include <vector>

void printRandom(std::default_random_engine e, std::string introduction) {
	std::cout << introduction << ": ";
	for (int i = 0; i < 10; ++i) 
		std::cout << e() << " ";
	std::cout.put('\n');
}

int main() {
	std::default_random_engine e1;
	std::default_random_engine e2;

	printRandom(e1, "e1");
	printRandom(e2, "e2");

	unsigned seed = std::chrono::steady_clock::now().time_since_epoch().count();
	std::default_random_engine e3(seed);

	printRandom(e3, "e3");

	e1.seed();
	e1.seed(10);
	e2.seed(10);

	if (e1 == e2)
		std::cout << "e1 and e2 have the same state\n";

	std::vector<int> d = { 1,2,3,4,5,6,7,8,9 };
	std::shuffle(d.begin(), d.end(), std::default_random_engine(seed));
	for (auto it : d)
		std::cout << it << " ";
	std::cout.put('\n');

	std::uniform_int_distribution<int> distr(-2, 5); //Range: <0;5>
	std::cout << distr(e3) << std::endl;

	std::uniform_real_distribution<double> distrR(0, 5); //Range: <0;5)
	std::cout << distrR(e3) << std::endl;

	std::poisson_distribution<int> distrP(3.0); //mean
	for (int i = 0; i < 100; ++i)
		std::cout << distrP(e3) << " ";
	std::cout << std::endl; 

	std::cout << "normal distribution:\n";
	std::normal_distribution<double> distrN(10.0, 3.0);
	std::vector<int> v(20);
	for (int i = 0; i < 800; ++i) {
		int num = distrN(e3);
		if (num >= 0 && num < 20) 
			++v[num];
	}
	for (int i = 0; i < 20; ++i) {
		std::cout << i << ": " << std::string(v[i], '*') << std::endl;
	}
	std::cout << std::endl;

	std::cin.get(); std::cin.get();
}

Rozumiem jak działa uniform_int_distribution oraz uniform_real_distribution. Nie rozumiem jednak do końca działania poisson_distribution oraz normal_distribution. Patrzyłem do dokumentacji ale nie wiele mi to mówi :/

Był bym bardzo wdzięczny jak ktoś by w prosty sposób wytłumaczył co robią te szablony oraz ich zastosowanie ( lub dał linka do jakiegoś artykułu ). Z góry dziękuje i pozdrawiam ;)

komentarz zamknięcia: temat wyczerpany.

2 odpowiedzi

+2 głosów
odpowiedź 30 maja 2019 przez Szahid Pasjonat (20,930 p.)
Jak sama nazwa mówi, pierwsze to rozkład paissona a drugi to rozkład normalny. To nie ma związku z programowaniem tylko z matematyką a konkretnie z rachunkiem podobieństwa. W Internecie jest to wytłumaczone na milion sposobów także na pewno znajdziesz coś dla siebie
+2 głosów
odpowiedź 30 maja 2019 przez criss Mędrzec (172,590 p.)
Wiesz co to jest rozkład prawdopodobieństwa? Jeśli tak, to nie powinieneś mieć problemu ze zrozumieniem po wpisaniu np. "poisson distribution" w Google grafika. Wykresy które ci pokaże Google przedstawiają funkcje rozkładu prawdopodobieństwa czyli funkcja określająca jakie jest prawdopodobieństwo wylosowania liczby znajdującej się w danym miejscu w przedziale. Zauważ, że taka funkcja przyjmuje wartości z przedziału [0;1) i że jej całka jest równa 1 (bo nie może być tak, że z jakimś prawdopodobieństwem nic nie zostanie wylosowane).
komentarz 30 maja 2019 przez Jakub 0 Pasjonat (23,120 p.)
Zrozumiałem że mój problem dotyczy matmy a nie C++... dzięki za uświadomienie tego :) pozdrawiam.

Podobne pytania

0 głosów
0 odpowiedzi 730 wizyt
pytanie zadane 21 maja 2020 w C i C++ przez Szarlotka Użytkownik (890 p.)
0 głosów
1 odpowiedź 610 wizyt
0 głosów
1 odpowiedź 427 wizyt
pytanie zadane 13 stycznia 2017 w C i C++ przez pokrywa1 Użytkownik (990 p.)

92,542 zapytań

141,383 odpowiedzi

319,482 komentarzy

61,929 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...