Angenommen, du hast 100 Fragen (0-99).
Dann füllst du zuerst ein dynamisches Array mit diesen Zahlen und tauscht zufällig immer 2 Einträge aus.
Delphi-Quellcode:
var
QIndex:
array of Integer;
// globales Array
AktuelleFrage:integer;
procedure SetupQIndex;
var
i, randomIndex,tmp : integer;
begin
SetLength(QIndex, 100);
// 100 Elemente
for i:=0
to 99
do
QIndex[i] := i;
// Vorbelegung
// durcheinander bringen
// zufällig zwei Einträge vertauschen
for i:=0
to 99
do
begin
tmp := QIndex[i];
randomIndex := Random(100);
QIndex[i] := QIndex[randomIndex];
QIndex[randomindex] := tmp;
end;
AktuelleFrage := 99;
end;
// hole die Nummer der Frage
function GetNextQIndex:integer;
begin
if AktuelleFrage < 0
then raise Exception.Create('
keine Fragen mehr');
result := QIndex[AktuelleFrage];
Dec(AktuelleFrage);
end;