Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Zahlen nur einmal vorkommen lassen (https://www.delphipraxis.net/150841-zahlen-nur-einmal-vorkommen-lassen.html)

hoika 29. Apr 2010 06:56

Re: Zahlen nur einmal vorkommen lassen
 
Hallo,

geeeigneter Datentyp TStringList

Da alle 13 Zahlen rein
per
Delphi-Quellcode:
Random(StrList.Count-1) // (oder Count, habs gerade nicht im Kopf)
eine Zahl rausziehen und per Delete löschen.


Heiko

p80286 29. Apr 2010 09:48

Re: Zahlen nur einmal vorkommen lassen
 
Zitat:

Zitat von Reap3r
Hi Leute!

Ganz simple Situation:

Ich würfel 13 mal mit einem Spielraum von 1 - 13:
Delphi-Quellcode:
x= random(13) + 1
Jetzt soll aber verhindert werden, dass eine der Zahlen mehrmals vorkommt.
es sollen beim würfeln also alle Zahlen, jeweils 1 mal, vorkommen.

Wie mache ich das?

Danke für alle Antworten

Bei 13 Würfen, bei denen keine Zahl "doppelt" vorkommen darf, wird das Ergebnis zwangsläufig 1..13 lauten.

Gruß
K-H

Mithrandir 29. Apr 2010 09:51

Re: Zahlen nur einmal vorkommen lassen
 
Zitat:

Zitat von p80286
Bei 13 Würfen, bei denen keine Zahl "doppelt" vorkommen darf, wird das Ergebnis zwangsläufig 1..13 lauten.

1..13 <> 1,5,4,6,8,10,13,12 ;)

himitsu 29. Apr 2010 10:05

Re: Zahlen nur einmal vorkommen lassen
 
Willst du eigentlich 13 Zahlen von 1 bis 13 in unterschiedlicher Reihenfolge

oder einige Zahlen (weniger als 13), welche im Bereich von 1 bis 13 liegen, aber sich nicht wiederholen dürfen?


Für Ersteres wurden ja schon Lösungen genannt.

Und für letzeres gibt es noch eine weitere und "einfache" Lösung.
> alle 13 Zahlen in eine Liste
> diese Liste mischen
> und dann nur noch die gemischte Liste auslesen

p80286 29. Apr 2010 11:06

Re: Zahlen nur einmal vorkommen lassen
 
Zitat:

Zitat von Mithrandir
Zitat:

Zitat von p80286
Bei 13 Würfen, bei denen keine Zahl "doppelt" vorkommen darf, wird das Ergebnis zwangsläufig 1..13 lauten.

1..13 <> 1,5,4,6,8,10,13,12 ;)

Reihenfolge? welche Reihenfolge?
und die Idee von Himitsu ist ja auch mal nicht so schlecht, fehlt jetzt vielleicht noch die GeWichtung ?

Gruß
K-H

Mithrandir 29. Apr 2010 11:20

Re: Zahlen nur einmal vorkommen lassen
 
Zitat:

Zitat von p80286
Reihenfolge? welche Reihenfolge?

Es geht nicht um die Reihenfolge. Würfelt man 13 mal und will keine Zahlen doppelt, dann ist auch eine Reihe a la 1,5,6,9,10,13 möglich, wenn man bei einer Dopplung nicht erneut würfelt. Und da die 13 feststehen, gehe ich davon aus, dass hier nicht 13 Zahlen von 1..13 gefordert sind, sondern 13 Züge mit einer resultierenden Zahlenmenge <= 13 ;)

Reap3r 29. Apr 2010 15:47

Re: Zahlen nur einmal vorkommen lassen
 
Sry wenn ich mich zu undeutlcih ausgedrückt habe, doch ich will dass 13 zahlen von 1..13 gewürfelt werden, alle vorkommen, jedoch jeweils nur einmal.

DeddyH 29. Apr 2010 16:31

Re: Zahlen nur einmal vorkommen lassen
 
Dann erstellt Dir eine Liste (z.B. TList oder meinetwegen auch TStringlist), pack da die Zahlen rein und zieh sie zufällig wieder raus.
Delphi-Quellcode:
while Liste.Count > 0 do
  begin
    Index := Random(List.Count);
    Zahl := Liste[Index];
    Liste.Delete(Index);
  end;

hoika 29. Apr 2010 21:09

Re: Zahlen nur einmal vorkommen lassen
 
Hallo,

was ist an #11 so schwer zu verstehen.
Fang doch mal im Kopf mit 3 Zahlen an.


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:12 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz