Mảng ngẫu nhiên - gia sư tin học, pascal nâng cao
Sinh ngẫu nhiên n số nguyên không âm cho mảng nguyên a.
Đặc tả
Trong TP hàm random(n) sinh
một số ngẫu nhiên kiểu nguyên nằm trong khoảng từ 0
đến n - 1. Hãy tưởng tượng có một quân súc sắc n
mặt mã số các mặt từ 0 đến n - 1. Khi
ta gọi hàm random(n) thì máy tính sẽ gieo quân
súc sắc đó và cho ta giá trị xuất hiện trên mặt ngửa.
Trong C# phương thức Next(n) của
lớp Random hoạt động tương tự như random(n)
của TP.
Chú ý
1. Trước khi gọi hàm random
ta cần gọi thủ tục randomize để máy
tính khởi động cơ chế phát sinh số ngẫu nhiên.
2. Thủ tục Gen(m)
trong chương trình dưới đây sinh ngẫu nhiên m
số nguyên trong khoảng từ 0 đến m - 1. Ta có thể cải tiến để viết thủ tục Gen(n,d,c) - sinh ngẫu nhiên n
số nguyên trong khoảng từ d đến c (d < c) như sau.
Để ý rằng random(c–d+1)
biến thiên trong khoảng từ 0 đến c–d, do đó d+random(c–d+1)
sẽ biến thiên trong khoảng từ d đến d+c–d = c.
(* Pascal
*)
program RandomGen;
(*------------------------------------------
Sinh
ngau nhien n so nguyen
khong
am cho mang a
-------------------------------------------
*)
{$B-}
uses crt;
const MN = 500;
var
a: array [1..MN] of integer;
n: integer;
Procedure Gen(m: integer);
var i: integer;
begin
randomize; n := m;
for i := 1 to n do a[i] :=
random(m);
end;
procedure Xem: tự viết;
BEGIN
Gen(200); Xem;
END.
Không có nhận xét nào:
Đăng nhận xét