Sinh hoán vị ngẫu nhiên
Sinh ngẫu nhiên cho mảng nguyên a một hoán vị của 1..n.
Gia sư tin học, Đặc tả
Xuất phát từ hoán vị đơn vị a = (1, 2,..., n) ta đổi chỗ a[1] với một phần tử tuỳ ý (được chọn
ngẫu nhiên) a[j] sẽ được một hoán
vị. Ta có thể thực hiện việc đổi chỗ
nhiều lần.
(* Pascal *)
(*-----------------------------------------
Sinh ngau nhien cho mang nguyen a
mot hoan vi cua 1..n
------------------------------------------*)
program GenPer;
const MN =
1000; { so luong toi da }
Esc = #27; { dau thoat }
BL = #32; { dau cach }
var a:
array[1..MN] of integer;
(*-----------------------
Sinh du lieu
-----------------------*)
procedure Gen(n: integer);
var i,j,x: integer;
begin
{ Khoi tao hoan vi don vi }
for i:= 1 to n do a[i]:= i;
for i:= 1 to n do
begin
j := random(n)+1;
x := a[1]; a[1] := a[j]; a[j] := x;
end;
end;
procedure
Xem(n: integer); tự viết
procedure
Test;
var n:
integer;
begin
randomize;
repeat {chon ngau nhien kich thuoc n = 10..39}
n := random(30)+10; Gen(n); Xem(n);
until ReadKey = Esc; { Nhan ESC de thoat }
end;
BEGIN
Test;
END.
Không có nhận xét nào:
Đăng nhận xét