Chủ Nhật, 22 tháng 12, 2013

Mảng ngẫu nhiên



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