RandG
Patryk27
RandG
Moduł: Math
Funkcja RandG wymaga modułu Math
Przykład użycia:
program Foo;
{$APPTYPE CONSOLE}
uses
Math;
var
I: Integer;
begin
for I := 0 to 10 do
WriteLn(Round(RandG(1000, 50))); // Round, ponieważ wynikiem funkcji są liczby zmiennoprzecinkowe (Extended)
end.
Może nam dać:
1020
940
976
905
958
985
1035
1056
1024
1055
953
11 liczb, ponieważ pętla for liczona jest od zera (rzecz jasna - nie musi)
Porównanie szybkości funkcji Random z RandG:
Random | RandG |
---|---|
60 milisekund | 2,5 sekundy |
(Intel Core 2 Duo, 1.86 GHz) | |
Jak widać - funkcja Random jest szybsza, lecz generuje ona częściej powtarzające się liczby, niżeli RandG. | |
Ja osobiście zalecam używanie Random, RandG tylko, jeżeli potrzebujemy kilka, najwyżej kilkaset losowych liczb. |
Zobacz też:
@rincewind: po prostu nie znam się na tym, a brakowało tego artykułu. Jeżeli chcesz, to przecież możesz go poprawić ;)
Ostatni akapit jest nieprawdziwy, i pokazuje brak zrozumienia tematu. Random generuje liczby z rozkładem równomiernym, RandG z normalnym. Rozkłady są czymś zupełnie innym. Nie można preferować któregokolwiek z tych generatorów z powodu wydajności, bo dają one zupełnie różne wyniki.
Ponadto: "funkcja Random jest szybsza, lecz generuje ona częściej powtarzające się liczby, niżeli RandG" -- co oznacza "częściej powtarzające się liczby"? Czyżby chodziło o okres generatora? Nie zdziwiłbym się, gdyby RandG korzystał z Random, więc argument z dupy.