Thứ Tư, 25 tháng 12, 2013

Sinh ngẫu nhiên theo khoảng



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).
Để ý 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