Mọi mô phỏng Monte Carlo trên máy tính đều cần một bộ sinh số giả ngẫu nhiên (pseudo-random number generator) để đảm bảo có thể lặp lại được. Một bộ sinh đơn giản và kinh điển là bộ sinh đồng dư tuyến tính (Linear Congruential Generator - LCG):
Xi+1=(a⋅Xi+c)modm
bắt đầu từ giá trị khởi tạo (seed) X0. Từ dãy X1,X2,…,Xn sinh ra, ta chuẩn hóa về đoạn [0,1) bằng Ui=Xi/m — đây chính là các số "ngẫu nhiên" dùng để chạy mô phỏng Monte Carlo.
Cho X0,a,c,m,n, hãy sinh và in ra n giá trị U1,U2,…,Un.
Ví dụ: X0=1,a=1,c=1,m=2,n=5: dãy X là 0,1,0,1,0 nên dãy U là 0.000000 0.500000 0.000000 0.500000 0.000000.
Một dòng duy nhất gồm 5 số nguyên cách nhau bởi khoảng trắng: X0 a c m n (0≤X0<m, 0≤a,c≤109, 1≤m≤231, 0≤n≤105).
In trên một dòng n số thực U1,…,Un (làm tròn đúng 6 chữ số thập phân), cách nhau bởi khoảng trắng. Nếu n=0, in ra một dòng trống.
Ví dụ:
Đầu vào:
0 0 0 1 0
Đầu ra:
Đầu vào:
1 1 1 2 5
Đầu ra:
0.000000 0.500000 0.000000 0.500000 0.000000
Đang tải editor...