gamdev.pas

来自「Delphi Pascal 数据挖掘领域算法包 数值算法大全」· PAS 代码 · 共 29 行

PAS
29
字号
FUNCTION gamdev(VAR ia,idum: integer): real;
VAR
   am,e,s,v1,v2,x,y: real;
   j: integer;
BEGIN
   IF (ia < 1) THEN BEGIN
      writeln('pause in routine GAMDEV'); readln END;
   IF (ia < 6) THEN BEGIN
      x := 1.0;
      FOR j := 1 TO ia DO x := x*ran3(idum);
      x := -ln(x);
   END ELSE BEGIN
      REPEAT
         REPEAT
            REPEAT
               v1 := 2.0*ran3(idum)-1.0;
               v2 := 2.0*ran3(idum)-1.0;
            UNTIL ((sqr(v1)+sqr(v2)) <= 1.0);
            y := v2/v1;
            am := ia-1;
            s := sqrt(2.0*am+1.0);
            x := s*y+am;
         UNTIL (x > 0.0);
         e := (1.0+sqr(y))*exp(am*ln(x/am)-s*y);
      UNTIL (ran3(idum) <= e)
   END;
   gamdev := x
END;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?