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

📄 cpwperm.pas

📁 生物信息学中的遗传数据分析的delphi源码。
💻 PAS
字号:


{$I CPDIR.INC}

unit cpwperm;

interface

uses
   cpwrand;  { uniform random number generator }


const
   MAXITEMS = 100;

type
   PERMUTATION = array[1..MAXITEMS] of 0..MAXITEMS;

type
   PERM_OBJ = object
      P: PERMUTATION;
      constructor Init (n:integer; Seed:longint);
      function GetSeed:longint;
      procedure MakeOne;
      procedure Show(var f:text);
      private
      U        : UNIFORM;
      items    : 0..MAXITEMS;
      RT       : 0..1;
      SeedUsed : longint;
      end;

implementation

{ create vector <1,..,n> }
constructor PERM_OBJ.Init (n:integer; Seed:longint);
var
   i: integer;
begin
   if (Seed = 0) then begin
      U.Init;
      SeedUsed := U.GetSeed;
      end
   else begin
      U.SetSeed (Seed);
      SeedUsed := Seed;
      end;
   items := n;
   for i := 1 to items do
      P[i] := i;
   RT := 0;
end;

function PERM_OBJ.GetSeed:longint;
begin
   GetSeed := SeedUsed;
end;


{ Generate a random permutation }
procedure PERM_OBJ.MakeOne;
var
   Temp, i, j, k : integer;
   r : real;
begin
   for i := 1 to Pred (items) do begin
      r := U.Rand01;
      j := items - i + 1;
      k := Trunc (j * r) + 1;
      Temp := P[j];
      P[j] := P[k];
      P[k] := Temp;
      end;
end;

{ show }
procedure PERM_OBJ.Show(var f:text);
var
   i:integer;
begin
   for i := 1 to items do
      write (f, P[i]:3);
   writeln (f);
end;

begin
end.

⌨️ 快捷键说明

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