Autor Beitrag
bax-projekt
Hält's aus hier
Beiträge: 8

XP Home, Mandriva 2006

BeitragVerfasst: Mo 23.01.06 14:28 
Hallo,
da ich schon viele Themen über Zufallsgenerator gelesen und erstellte ein kleines progi.

Jedes Zahl (1-255) kommt nur einmal vor ;)

Vielleicht braucht jemand sowas für sein progi.


MfG
bax-projekt


Moderiert von user profile iconChristian S.: Topic aus Dateizugriff verschoben am Mo 23.01.2006 um 14:33
Moderiert von user profile iconChristian S.: Topic aus Freeware Projekte verschoben am Mo 23.01.2006 um 20:14


Zuletzt bearbeitet von bax-projekt am Mo 23.01.06 14:31, insgesamt 1-mal bearbeitet
MichaZ
Hält's aus hier
Beiträge: 3

Win XP
Delphi 7 Enterprise
BeitragVerfasst: Mo 23.01.06 14:30 
Ich weiß, es gibt keine dummen Fragen, sondern nur dumme Antworten, aber... > Worin liegt der Sinn? ^^
Ich komm da nicht ganz mit...
LLCoolDave
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 212

Win XP
Delphi 2005
BeitragVerfasst: Mo 23.01.06 14:33 
Mal davon abgesehen dass nicht einmal alle Zahlen vorkommen bzw einige (sicher sogar viele) doppelt sind, hab hier zufällig 2 6en direkt unter einander ... :P
bax-projekt Threadstarter
Hält's aus hier
Beiträge: 8

XP Home, Mandriva 2006

BeitragVerfasst: Mo 23.01.06 14:34 
user profile iconMichaZ hat folgendes geschrieben:
Ich weiß, es gibt keine dummen Fragen, sondern nur dumme Antworten, aber... > Worin liegt der Sinn? ^^
Ich komm da nicht ganz mit...


Vielleicht für dich macht es kein Sinn, aber es gibt Leute die sowas nicht können. Wollte nur gefallen tun. Sorry.
bax-projekt Threadstarter
Hält's aus hier
Beiträge: 8

XP Home, Mandriva 2006

BeitragVerfasst: Mo 23.01.06 14:40 
OK, mein Fehler und ich dachte schon :(

Leute, kann mir jemand helfen, wie kann ich ein zufallsgenerator machen (1-255) wo gedes Zahl nur einmal vorkommt?

Bin dankbar!
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5285
Erhaltene Danke: 29

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mo 23.01.06 14:55 
kein ding:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var
  zahlen: array[0..255] of boolean;
  i, j, zahl: integer;
begin
  for i := 0 to 255 do
    zahlen[i] := false;
  for j := 0 to 255 do  
  begin
    repeat
      zahl := random(256);
    until (zahlen[zahl] = false);
    zahlen[zahl] := true;

    writeln(inttostr(zahl));  // hier kommt die ausgabe, memo1.lines.add() oder so

  end;

sollte funktionieren, ich denke eine weitere abfrage ist nicht nötig, da die anzahl der ausgebenen zahlen der maximal zahl entspricht;

wenn du von 1..255 haben willst, musst du das noch ein wenig abändern, aber ich denke du hast die eigeninitiative dazu ;)
Spaceguide
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 552


(D3/D7/D8) Prof.
BeitragVerfasst: Mo 23.01.06 15:35 
Ich glaub das geht eleganter, wenn man die Zahlen in einer Liste einträgt und die gezogenen jeweils löscht. Dein "repeat until" ist bestenfalls O(n).
bax-projekt Threadstarter
Hält's aus hier
Beiträge: 8

XP Home, Mandriva 2006

BeitragVerfasst: Mo 23.01.06 16:08 
Danke F34r0fTh3D4rk!
von 1-255 war nicht so schwer :)

Nochmal danke
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5285
Erhaltene Danke: 29

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mo 23.01.06 16:36 
musst dann eben random(255) + 1 machen
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 23.01.06 20:14 
Moin!

Warum immer so kompliziert, einfach "rückwärts" sortieren... :wink:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var  
  Zahl: array[0..255] of Integer;
  i,j,hilf: Integer;
begin  
  for i := 0 to 255 do // alle Zahlen erzeugen
    Zahl[i] := i;  
  for i := 0 to 255 do begin // durchschütteln
    j := Random(256);
    hilf := Zahl[i];
    Zahl[i] := Zahl[j];
    Zahl[j] := hilf;
  end;
  for i := 0 to 255 do // ausgeben
    Memo1.Lines.Add(IntToStr(Zahl[i]));

cu
Narses
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Mo 23.01.06 20:24 
Narses: Du machst einen klitzekleinen Fehler, der -rein rechnerisch- das Array nicht ganz so gut durchmischt. I.A. nimmt man den fast identischen Code von Miller-Yates zum Durchmischen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
For I := 0 to Count-1 do begin  
  J := I+random(Count-I);  
  T := A[J];  
  A[J] := A[I];  
  A[I] := T;  
end;

Das Prinzip ist aber das Gleiche.

_________________
Na denn, dann. Bis dann, denn.