WinFuture-Forum.de: [delphi] Array Mischen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

[delphi] Array Mischen Ein Array of Integer mischen


#1 _PelzigesWaldtier_

  • Gruppe: Gäste

geschrieben 28. Februar 2006 - 20:31

Hallo,

ich möchte in meinem Delphiprogramm Spielkarten darstellen und habe mir gedacht, dass ich ein Array of Integer [1..32] nehme, welches von 7, 7, 7, 7 bis 14, 14, 14, 14 geht. Das geht sicherlich besser, eleganter und toller aber für meine Zwecke reicht es glaube ich aus.

Nur muss ich jetzt die Karten noch mischen. Kann mir da vielleicht jemand helfen? Wie geht man das am besten an?

Ich dachte mir, dass man Zahlen per Zufallsgenerator zieht, aufzeichnet wieviele Male jeder Kartentyp (7, 8, 9 oder 10) bereits gezogen wurde und dann diese Typen ausschließt. Aber das würde ja sehr lange dauern ...

Grüße,
-PelzigesWaldtier

Dieser Beitrag wurde von PelzigesWaldtier bearbeitet: 28. Februar 2006 - 20:33

0

Anzeige



#2 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 28. Februar 2006 - 20:44

Multiplikation von Permutationen :-)

Laufe durch das Array durch und bestimme für jede Position jeweils eine zweite Position durch eine Zufallszahl - und dann tausche diese Elemente. Die durch die statistisch gleichverteilten Transpositionen gebildeten möglichen Permutationen sind ebenfalls gleichverteilt.

Random r := new Random();
for Integer i:=0 to 31 do begin
  array[i]:=array[r.getLong()%32];
end;

Dieser Beitrag wurde von Rika bearbeitet: 28. Februar 2006 - 20:49

Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#3 _PelzigesWaldtier_

  • Gruppe: Gäste

geschrieben 28. Februar 2006 - 20:49

Danke für die schnelle Antwort. Das werd' ich sofort mal umsetzen.

-PW

Dieser Beitrag wurde von PelzigesWaldtier bearbeitet: 28. Februar 2006 - 20:51

0

#4 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 28. Februar 2006 - 20:54

Nein, eher die Idee dahinter.
Dein ursprüngliches Array ist eine Permutation, das Ziel ist eine Permutation und das Überprüfen, ob ein Array eine Permutation ist, ist halt zu aufwendig. Also verwendet man eine Operation, unter der die Gruppe der Permutation abgeschlossen ist, wie z.B. die Multiplikation.

Und die ist sogar noch isomorph zu der Gruppe selbst und damit gleichverteilt. Die einzige Eleganz besteht darin, das Erstellen einer zufälligen Permutation in das Erstellen von einzelnen zufälligen Transpositionen zu zerlegen.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0