Pascal-random
-
Yxo
Medium Star
- Príspevky: 357
- Registrovaný: 24 aug 2005, 11:14
- Bydlisko: Veľaty/Brno
- Kontaktovať používateľa:
Pascal-random
Ako mam prinutit pascal aby mi nahodne poprehadzoval poradie cisel? Napr. zadam rad cisel od 1 po 20 a vypise tych 20 cisel v nahodnom poradi.
Aký algoritmus na premiešanie pola používaš? Rýchly je napr. tento spôsob:(v Pascale som už dávno nič nerobil, takže možno tam bude nejaká chyba)
Kód: Vybrať všetko
var
a: array[1..20] of Integer;
i, r, t: Integer;
begin
Randomize;
for i := 1 to 20 do
begin
a[i] := i;
end;
for i := 1 to 20 do
begin
r := random(20) + 1;
t := a[i];
a[i] := a[r];
a[r] := t;
end;
end.-
Yxo
Medium Star
- Príspevky: 357
- Registrovaný: 24 aug 2005, 11:14
- Bydlisko: Veľaty/Brno
- Kontaktovať používateľa:
Vygenerujem dostatocny pocet premiesani (p), a tolko krat sa potom navzajom vymenia nahodne prvky pola.
Kód: Vybrať všetko
var a:array [1..20] of integer;
p,i,j,k,l:integer;
begin
randomize;
p:=(random(100)+50);
for i:=1 to p do begin
k:=(random(19)+1);
l:=(random(19)+1);
j:=a[k];
a[k]:=a[l];
trieda[l]:=j;
end;
end.
-
mastermind
VIP
- Príspevky: 4810
- Registrovaný: 09 feb 2005, 13:17
uplne zbytocne to miesas viac krat. ak sa bavime o pseudonahodnom poradi takYxo napísal:Vygenerujem dostatocny pocet premiesani (p), a tolko krat sa potom navzajom vymenia nahodne prvky pola.Kód: Vybrať všetko
var a:array [1..20] of integer; p,i,j,k,l:integer; begin randomize; p:=(random(100)+50); for i:=1 to p do begin k:=(random(19)+1); l:=(random(19)+1); j:=a[k]; a[k]:=a[l]; trieda[l]:=j; end; end.
1 x premiesanie = 2 x premiesanie= 3 x premiesanie
atd