疑似乱数 by Mathematica

一様乱数（0~ 1 の実数）

(* U[0,1) を 10000個生成する *)
len = 10000;

seq={};
Do[
AppendTo[seq,Random[]],{i,1,len}
]

(* はじめの100個を表示 *)
Take[seq,100]

(* ヒストグラムを確率密度関数として描く *)
gHist=Histogram[seq,Automatic,"PDF"]

(* 一様乱数の確率密度関数を描く *)
gPdf=Plot[Evaluate[PDF[UniformDistribution[{0,1}],k]],{k,-0.2,1.2},PlotRange->All]

Show[gHist,gPdf]

二項分布に従う乱数（整数値）

(* パラメータ n, p の二項分布に従う乱数を 10000 個生成する *)
len = 10000;
n=20;
p=1/2;

seq={};
Do[
AppendTo[seq,Random[BinomialDistribution[n,p]]],{i,1,len}
]

(* はじめの100個を表示 *)
Take[seq,100]

(* ヒストグラムを確率密度関数として描く *)
gHist=Histogram[seq,n,"PDF"]

(* 確率密度関数を描く *)
gPdf=Plot[Evaluate[PDF[BinomialDistribution[n,p],k]],{k,0,n}]

Show[gHist,gPdf]

確率変数の変換 1

(* U[0,1) を 10000個生成する *)
len = 10000;

seq={};
Do[
AppendTo[seq,Random[]],{i,1,len}
]

Take[seq,100]

(* 対数をとって符号を変える *)
seq2=-Log[seq];

Take[seq2,100]

gHist=Histogram[seq2,Automatic,"PDF"]

gPdf=Plot[Evaluate[PDF[ExponentialDistribution[1],k]],{k,0,10},PlotRange->All]

Show[gHist,gPdf]

確率変数の変換 2

(* U[0,1) を 10000個生成する *)
len = 10000;

seq={};
Do[
AppendTo[seq,Random[]],{i,1,len}
]

Take[seq,100]

(* 平方根をとる *)
seq2=Sqrt[seq];

Take[seq2,100]

gHist=Histogram[seq2,Automatic,"PDF"]

gPdf=Plot[2k,{k,0,1},PlotRange->All]

Show[gHist,gPdf]

Random walk by Mathematica

numIndivs=1000;
indivs=Table[{0,0},{i,1,numIndivs}];

tStep=100;

d=1;
data={};
Do[
AppendTo[data,indivs];

Do[
angle=RandomReal[{0,2Pi}];
{dx,dy}={d Cos[angle],d Sin[angle]};
indivs[[i]]+={dx,dy},{i,1,numIndivs}
]
,{t,0,tStep}
]

Take[data[[1]],10]

Take[Last[data],10]

Do[
Print[
ListPlot[data[[i]],PlotRange->{{-30,30},{-30,30}},AspectRatio->1]
],{i,1,Length[data]}
]

maxDistance=Map[Max,data]

ListPlot[maxDistance,Joined->True,AxesLabel->{"t","Max distance"},PlotStyle->Thickness[0.005]]

Random walk by C

SetDirectory["~"]

data=ReadList["data_monte",Real,RecordLists->True];
data2=Map[Partition[#,2]&,data];
Length[data2]
{Max[data2],Min[data2]}

Do[
Print[
ListPlot[data2[[i]],PlotRange->{{-30,30},{-30,30}},AspectRatio->1]
],{i,1,Length[data2]}
]