RandG

Patryk27
RandG
Moduł: Math
```delphi Function RandG (Mean, StdDev: Extended): Extended; ``` RandG reprezentuje generator liczb pseudolosowych o rozkładzie Gaussa wokół średniej Mean. Parametr StdDev jest odchyleniem standardowym generowanych liczb od wartości średniej (Mean).

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ż:

2 komentarzy

@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.