% ================LCG================
clc;
clear all;
Z0=2;
m=10;
a=2;
c=7;
n=8;
ZN=[];
for i=1:n
x=(a*Z0+c);
zn=(x/m-floor(x/m))*m;
ZN=[ZN zn];
Z0=zn;
end,
ZN
% Punya Saiya
clc;
clear all;
a=2;
c=7;
m=10;
z0=2;
z=[]
for i=1:8,
zi = mod((a*z0+c),m);
z0 = zi
z = [z zi];
end,
z
% ================MRNG================
clc;
clear all;
Z0=129;
m=2048;
a=67;
n=20;
ZN=[];
UI=[];
for i=1:n
x=(a*Z0);
zn=(x/m-floor(x/m))*m;
Ui=zn/m;
UI=[UI Ui];
ZN=[ZN zn];
Z0=zn;
end,
ZN
UI
% Punya Saiya
clear all;
clc;
a=67;
m=2048;
z0=129;
n=4;
z=[];
u=[];
for i=1:n,
zi = mod((a*z0),m);
z0 = zi
un = zi/m; %untuk membangkitkan (edo tensei)
u = [u un];
z = [z zi];
end,
z
u
% ================Monte Carlo================
% Kasus 1
clc;
clear all;
a=2;
c=7;
m=10;
n=8;
z0=2;
z=[];
T = 0 ; H = 0 ;
for i=1:n,
zi = mod((a*z0+c),m);
z0 = zi;
koin = mod(2,zi);
if koin > 0,
T = T+1 ;
fprintf('%d Tail\n',koin)
else
H = H+1 ;
fprintf('%d Head\n',koin)
end
end,
fprintf('In %d tosses,number of Heads=%d and number of Tails = %d\n',n,H,T)
fprintf('Rata-rata Heads=%d and Rata-rata Tails = %d\n',H/n,T/n)
% Kasus 2
clc;
clear all;
a=2;
c=7;
m=10;
n=8;
z0=2;
z02=2;
z=[];
MM = 0 ; EM = 0 ; EE = 0 ;
for i=1:n,
zi = mod((a*z0+c),m);
z0 = zi;
koin = mod(2,zi);
zi2 = mod((a*z02+c),m);
z02 = zi2;
koin2 = mod(2,zi2);
if koin==0 && koin2==0,
MM = MM+1 ;
fprintf('MM\n')
elseif (koin==0 && koin2>0)||(koin>0 && koin2==0),
EM = EM+1 ;
fprintf('EM\n')
else
EE = EE+1 ;
fprintf('EE\n')
end
end,
fprintf('In %d tosses,jumlah Muka Muka=%d, Jumlah Muka Ekor = %d, jumlah Ekor Ekor = %d\n',n,MM,EM,EE)
fprintf('Rata-rata Muka Muka=%d, Rata-rata Muka Ekor = %d, Rata-rata Ekor Ekor = %d\n',MM/n,EM/n,EE/n)
% Kasus 3
clear all;
clc;
a=67;
m=10;
z0=129;
n=1000;
z=[];
u=[];
z2=[];
u2=[];
M=0;
N=1000;
for i=1:n,
% Yang X
zi = mod((a*z0),m);
z0 = zi;
un = zi/m;
u = mod(2,[u un]);
z = [z zi];
% Yang Y
zi2 = mod((a*z0),m);
z0 = zi2;
un2 = zi2/m;
u2 = mod(2,[u2 un2]);
z2 = [z2 zi2];
% masukin ke x dan y
x = u^2;
y = u2^2;
rKuadrat = x + y;
if rKuadrat > 0,
M = M;
else
M = M+1;
end
end,
p = 4*M/N
clear all;
clc;
a=67;
m=10;
z0=129;
z02=129;
n=1000;
z=[];
z2=[];
x=[];
y=[];
M=0;
N=1000;
for i=1:n,
zi = mod((a*z0),m);
z0 = zi;
un = zi/m; %untuk membangkitkan (edo tensei)
x = mod(2,[x un]);
z = [z zi];
zi2 = mod((a*z02),m);
z02 = zi2;
un2 = zi2/m; %untuk membangkitkan (edo tensei)
y = mod(2,[y un2]);
z2 = [z2 zi2];
rKuadrat = x*x + y*y;
if rKuadrat > 0,
M = M;
else
M = M+1;
end
end,
p = 4*M/N
0 Komentar untuk "Contekan"