Generowanie liczb losowych - coś bardziej realnego, niż Random

0

Czy w Delphi są jakieś inne narzędzia do generowania liczb losowych oprócz Random?
Bo odnoszę wrażenie, że wspomniana procedura nie generuje prawdziwie losowych liczb

5

Random nie zapewnia losowych liczb, bo CPU nie potrafi takich generować. Dlatego nazywa się te liczby pseudolosowymi, bo generowane sekwencje zawsze są takie same, a żeby takimi nie były, używa się wstępnie Randomize, aby wykorzystać systemową datę jako seed generatora.

Jeśli chcesz mieć prawdziwie losowe liczby, to musisz sobie stworzyć generator, który będzie dane otrzymywał spoza komputera, np. w formie dźwięku lub obrazu z kamery. Np. coś w rodzaju Lavarand.

1

Mój poprzednik ma rację, że Random jest uzależniony od taktowania procesora i randomize, które powinno być wywołane tylko raz i w pliku nie pas. Zajmowałem się tym problemem ponad 13 lat i zrobiłem coś takiego. Zastosowałem pomieszanie w pomieszaniu co zbliżyło mnie do liczb czysto losowych nie pseudolosowych.. Dobrym przykładem jest badanie szumu białego lub opadów atmosferycznych. Ile spadnie kropel z deszczu w Twoim mieście. Tego nie wiesz jest czystą losowością. Jeśli wybierzesz grafikę np. z kamery przetwarza to nadal komputer. Każdy ruch w klatce kamery powinien być nie Twoim obrazem samego siebie bo to już nie losowe lecz z kamery niezależnej. Jak najbardziej proponuję dźwięk.

5
Mariusz Bruniewski napisał(a):

Mój poprzednik ma rację, że Random jest uzależniony od taktowania procesora […]

Random nie jest uzależniony on taktowania procesora — nic takiego nie napisałem i mi tego nie imputuj.

[…] i randomize, które powinno być wywołane tylko raz i w pliku nie pas.

Nie ma znaczenia gdzie się wywoła Randomize — czy to w dpr, czy pas, czy inc, żadna różnica. Istotne jest jedynie to, aby ziarno było ustawione raz i zanim zacznie się korzystać się z funkcji Random. To jeśli chodzi o typowe przypadki, bo nic nie stoi na przeszkodzie, aby Randomize wywoływać wielokrotnie — można to robić, jeśli ma się taką potrzebę, choć w typowych przypadkach takiej potrzeby nie ma.

Jeśli wybierzesz grafikę np. z kamery przetwarza to nadal komputer.

Koniec końców, informacje zawsze będzie przetwarzać komputer, bo to na nim jest uruchomiony program, który potrzebuje danych losowych. Tak więc to żadna różnica jakie informacje się je dostarczy i w jakiej postaci, bo ważne jest jedynie to, aby dane były wygenerowane w sposób niedeterministyczny, czyli np. przez naturę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1