Autor Beitrag
katmai
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

Win xp

BeitragVerfasst: Fr 03.03.06 19:04 
Hallöle, ertsmal ne Vorwarnung ich bin neu hier also bitte bitte seit freundlich zu mir *g* :wink: .

Ich hab folgendes Problem:

Ich brauch 10 Zufallszahlen aus einer Menge von 1-30 bei denen keine Wiederholung auftritt.
Wenn ich den Zufallsgenerator Randomize aktiviert habe und dann über eine For i:=1 to 10 do Schleife einem arry[1..10]of integer die 10 Random Werte zuweise habe ich Doppelungen und 0 Werte dabei.
Die 0 Werte wollte ich mit RandomRange(1,30) beseitigen aber das geht auch nicht. habt ihr ne Idee die Doppelungen und 0 Werte zu verhindern ?

_________________
es gibt 10 Gruppen von Menschen, die einen die das Binärsystem verstehen und die anderen.
Martin1966
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1068

Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: Fr 03.03.06 19:11 
Hallo und :welcome: hier im Delph-Forum! :wink2:

Du musst bevor du eine Zufallszahl in das Array schreibst prüfen ob bereits diese Zahl in dem Array vorhaden ist. Wenn ja suchst du weiter und prüfst erneut.

Eine andere Möglichkeit wäre vorher ein Array von 1..30 mit Zahlen zu füllen:
ausblenden Quelltext
1:
2:
3:
4:
5:
Array[1] = 1;
Array[2] = 2;
Array[3] = 3;
...
Array[30] = 30;

Dann läßt du das Array mischen und anschl. kannst du dir die ersten drei Array Elemente nehmen.

Lg Martin

_________________
Ein Nutzer der Ecke ;-)
katmai Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

Win xp

BeitragVerfasst: Fr 03.03.06 19:17 
mh das mit dem mischen hört sich gut an wie ein Kochrezept. Und wie mischt ich ein Array ?

_________________
es gibt 10 Gruppen von Menschen, die einen die das Binärsystem verstehen und die anderen.
Martin1966
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1068

Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: Fr 03.03.06 19:23 
In dem Du Dir zwei Zufallszahlen erzeugst und dann die beiden Werte im Array vertauscht.

Hier hab ich heute eine Funktion gepostet die die Buchstaben in einem Wort zufällig vertauscht. Vom Prinzip genau das gleiche:

>> www.delphi-forum.de/....php?p=340289#340289

_________________
Ein Nutzer der Ecke ;-)
katmai Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

Win xp

BeitragVerfasst: Fr 03.03.06 19:28 
ich check das mal aus det sieht irgendwie sehr logisch aus

Danke dir für die Hilfe! see you later

katmai has left the game...

_________________
es gibt 10 Gruppen von Menschen, die einen die das Binärsystem verstehen und die anderen.
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Sa 04.03.06 00:36 
Ist jetzt halt mit einem Array 0..9 gelöst.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
Const  
 MinV = 1;
 MaxV = 30;
 Count = 10;

 Aux_Count = MaxV-MinV+1;
Var
 A : array of Integer;
 I, J, T : Integer;
begin
 Randomize;
 Assert(Aux_Count>=Count);
 SetLength(A, Aux_Count);
 for I := 0 to Aux_Count-1 do
  A[I] := I+MinV;
 for I := 0 to Count-1 do
 begin
  J := I+random(Aux_Count-I);
  T := A[J];
  A[J] := A[I];
  A[I] := T;
  ShowMessage(Format('Die %d. Zahl Lautet %d.',[i+1,A[I]]));
 end;
 SetLength(A, Count);
end;