Moim zdaniem generator liczby pseudo-losowych wytworzy deterministyczną sekwencję liczb. Aby uzyskać 2 losową sekwencję w jednym programie, potrzebne są 2 generatory o różnych nasionach. to jest:

default_random_engine gen1(1);
default_random_engine gen1(2);
uniform_int_distribution<int> dist(1, 5);
for (int i = 0; i < 100; ++i)
{
    seq1[i] = dist(gen1);
    seq2[i] = dist(gen2);
}
  1. Czy mogę używać tylko 1 generatora do produkcji 2 niezależnych sekwencji?
  2. Czy powinienem utworzyć nowy obiekt dystrybucyjny dla każdej sekwencji?
c++
2
Solaroi Zeng 24 czerwiec 2020, 09:04

1 odpowiedź

Czy mogę używać tylko 1 generatora do produkcji 2 niezależnych sekwencji?

Cóż, tak i nie.

Jeśli sekwencja jednego generatora była "Naprawdę" sekwencja niezależnych i identycznie rozproszonych próbek (cytaty, ponieważ znaczenie tego terminu jest w rzeczywistości problematyczne) - wtedy można przyjmować dziwne elementy i nawet elementy w sekwencji wygenerowanych wartości i mieć dwie niezależne sekwencje.

Teraz Prng jest tak samo sugeruje, tylko pseudo-losowo. To nie znaczy, że nie jest nie> "Losowe" - standard językowy nie wymaga jej deterministyczne. Również może używać niektórych hałasu termicznego, który może nie być losowy, ale może być od niego odróżniający. Ale może być również doskonale deterministyczne, w którym to przypadku, biorąc pod uwagę krótką część sekwencji nieparzystej, jest teoretycznie możliwe do określenia jeszcze sekwencji.

Dla większości celów, które nie mają silnych wymagań dotyczących dystrybucji źródła, aw praktyce możesz traktować dziwne elementy, a sekwencje równomierne jako niezależne i identyczne rozproszone.

Czy powinienem utworzyć nowy obiekt dystrybucyjny dla każdej sekwencji?

Prawdopodobnie. Klasa dystrybucji C ++ jest błędna; Jest to klasa "sampler", z podstawową przestrzenią próbki charakteryzującą się pewną dystrybucją; a gdzie operator() wykonuje próbkowanie. Więc nie myśl o tym jako "innej dystrybucji" - taka sama dystrybucja, kolejna próba przestrzeni.

2
einpoklum 24 czerwiec 2020, 08:03