洗牌
Procedure Shuffle(Var data:Array Of integer);
Var i: integer;
j: integer;
k: integer;
Begin
randomize;
i := high(data);
Repeat
j := trunc(random()*100) Mod i;
k := data[i];
data[i] := data[j];
data[j] := k;
dec(i);
Until i <= low(data);
End;
蒙特卡洛计算pi值
在一个边长为a的正方形内一均匀概率随机投点,该点落在此正方形的内切圆中的概率即为内切圆与正方形的面积比值
- (pi * (a/2) * (a/2)) /(a*a) = m/n;
- (pi * (a/2) * (a/2)) = (m * a * a)/n;
- pi * a * a = 4*(m * a * a)/n;
- pi = 4 * m /n
Function PiByMonteCarlo(n:int64;a:integer=1): real;
Var m: int64;
i: int64;
x: real;
y: real;
d: real;
Begin
randomize;
m := 0 ;
d := (a*1.0/2)*(a*1.0/2);
For i:=1 To n Do
Begin
x := random*a /2 ;
y := random*a /2;
If x*x + y*y <= d Then
inc(m);
End;
result := (4.0*m)/n;
End;