⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 random.apb

📁 Pascal Programs Printed in GENETIC ALGORITHMS IN SEARCH, OPTIMIZATION, AND MACHINE LEARNING by Da
💻 APB
字号:
{ random.apb: contains random number generator and related utilities              including advance_random, warmup_random, random, randomize,              flip, rnd }{ Global variables - Don't use these names in other code }var   oldrand:array[1..55] of real; { Array of 55 random numbers }      jrand:integer;                { current random }procedure advance_random;{ Create next batch of 55 random numbers }var j1:integer;    new_random:real;begin for j1:= 1 to 24 do  begin   new_random := oldrand[j1] - oldrand[j1+31];   if (new_random < 0.0) then new_random := new_random + 1.0;   oldrand[j1] := new_random;  end; for j1:= 25 to 55 do  begin   new_random := oldrand[j1] - oldrand[j1-24];   if (new_random < 0.0) then new_random := new_random + 1.0;   oldrand[j1] := new_random;  end;end;procedure warmup_random(random_seed:real);{ Get random off and runnin }var j1,ii:integer;    new_random,prev_random:real;begin oldrand[55] := random_seed; new_random := 1.0e-9; prev_random := random_seed; for j1:=1 to 54 do  begin   ii := 21*j1 mod 55;   oldrand[ii] := new_random;   new_random := prev_random - new_random;   if (new_random < 0.0) then new_random:=new_random+1.0;   prev_random:=oldrand[ii]  end;  advance_random;  advance_random; advance_random;  jrand:=0;end;function random:real;{ Fetch a single random number between 0.0 and 1.0 - Subtractive Method }{ See Knuth, D. (1969), v. 2 for details                                }begin jrand := jrand + 1; if (jrand > 55) then  begin jrand:=1; advance_random end; random := oldrand[jrand];end;function flip(probability:real):boolean;{ Flip a biased coin - true if heads }begin if probability = 1.0 then flip := true    else flip := (random <= probability);end;function rnd(low,high:integer):integer;{ Pick a random integer between low and high } var i:integer; begin  if low >= high then i := low    else begin     i := trunc( random * (high-low+1) + low);     if i > high then i := high;    end; rnd := i;end;procedure randomize;{ Get seed number for random and start it up }var randomseed:real;begin repeat  write('Enter seed random number (0.0..1.0) > '); readln(randomseed); until (randomseed>0) and (randomseed<1.0); warmup_random(randomseed);end;

⌨️ 快捷键说明

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