Gia sư tin học và bài toán Sinh ngẫu nhiên theo khoảng
Sinh ngẫu nhiên cho mảng nguyên a n phần tử trong khoảng -M..M; M > 0.
Đặc tả
Ta viết thủ tục tổng quát Gen(n,d,c) - sinh ngẫu nhiên n số nguyên trong khoảng từ d đến c (d < c) (xem bài
giải 1.4). Để
giải bài 2.1 ta chỉ cần gọi
Gen(n,-M,M).
Gen(n,-M,M).
Để ý 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.
(*-----------------------------------------
sinh ngau nhien n so nguyen trong khoang
d den c va ghi vao mang a
-----------------------------------------
*)
Procedure
Gen(n,d,c: integer);
var i,len:
integer;
begin
randomize;
len := c-d+1;
for i:=1 to n do a[i]:= d+random(len);
end;
(* Pascal *)
(*------------------------------------------
Sinh ngau nhien cho mang nguyen a
n phan tu trong khoang -M..M; M > 0.
-------------------------------------------*)
program RGen;
uses crt;
const MN =
1000;
var a: array[1..MN]
of integer;
(*--------------------------------------------
sinh ngau
nhien n so nguyen trong khoang
d den c va ghi
vao mang a
------------------------------------------
*)
Procedure
Gen(n,d,c: integer); tự viết
procedure
Xem(n: integer); Hiển thị mảng a, tự viết
procedure
Test;
var n:
integer;
begin
n := 20;
{ sinh ngau
nhien 20 so trong khoang -8..8 }
Gen(n,-8,8);
Xem(n);
readln;
end;
BEGIN
Test;
END.
Không có nhận xét nào:
Đăng nhận xét