AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Skatblatt darstellen durch Random?

Offene Frage von "Lotus"
Ein Thema von Lotus · begonnen am 9. Nov 2009 · letzter Beitrag vom 11. Nov 2009
Antwort Antwort
Seite 1 von 3  1 23      
Lotus

Registriert seit: 26. Feb 2007
85 Beiträge
 
Delphi 7 Personal
 
#1

Skatblatt darstellen durch Random?

  Alt 9. Nov 2009, 17:38
Hi, ich habe eine Aufgabe bekommen, wo ich scheinbar irgendwie auf dem Schlauch stehe.

Über Math.random werden mir Zahlen zwischen 0,0 und 1,0 (als double) geliefert. Ich soll nun durch diese Zahlen ein Skatblatt simulieren.
Das bedeutet, 32 Karten bzw. Zahlen, wobei
• 4 x 7
• 4 x 8
• 4 x 9
• 4 x 10
• 4 x Bube
• 4 x Dame
• 4 x König
• 4 x As

An sich haette ich jetzt gesagt, da das 8 unterschiedliche Karten sind, nehme ich einfach den Randomwert und schau ob der >0,125 ; > 0,25 ....

Also immer im Abstand von 0,125, da 1,0/8
Allerdings haette ich damit totalen Zufall, was die Karten im Stapel angeht und nicht vorhergesagt, das nur 4x 7 drin is etc..
Wie kann ich das umsetzen?
Evtl könnte ich ja das ganze in einem Zaehler speichern, und immer schauen, ob die Zahl schon 4x vorhanden ist, wenn ja, dann soll neu gewürfelt werden? Habt ihr ne bessere Idee?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: Skatblatt darstellen durch Random?

  Alt 9. Nov 2009, 17:44
Random(32)
0 bis 31

entspricht Trunc(Random * 32)

jetzt würde jede Zahl einer der 32 Karten entsprechen

oder du machst Random(8) und Random(4)
das Erste wäre jetzt die Karte und das Andere die Farbe
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Skatblatt darstellen durch Random?

  Alt 9. Nov 2009, 17:46
... oder Random(32) +1

dann haste Zufallszahlen von 1..32
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#4

Re: Skatblatt darstellen durch Random?

  Alt 9. Nov 2009, 17:54
Ich glaube es geht hier darum, einen Kartenstapel zu mischen, welcher die oben genannten Karten enthält.
Kann das sein?

Hier im Forum suchenKarten mischen

MfG,
Bug
  Mit Zitat antworten Zitat
Lotus

Registriert seit: 26. Feb 2007
85 Beiträge
 
Delphi 7 Personal
 
#5

Re: Skatblatt darstellen durch Random?

  Alt 10. Nov 2009, 18:04
Wie ich meine Randomwerten bestimmte "Kartenwerte" zuordnen kann, oder wie ich nur einen bestimmten Bereich als mögliche Werte angeben kann ist mir bewusst. Es geht darum, das, falls ich Zahlen von 1-8 Zulasse, jede Zahl nur maximal 4x kommt. Demnach kommt 4x die 2, dann darf kein randomwert mehr die 2 annehmen.. an sich könnte ich eine zählvariable mitlaufen lassen, und jedes mal sagen, wenn i>4 dann neu wuerfeln... allerdings is das einfach mal nich ressourcenfreundlich
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Skatblatt darstellen durch Random?

  Alt 10. Nov 2009, 18:30
Ziehen ohne Zurücklegen macht man am Besten mit einer Liste, aus der man das gezogenen Element entfernt.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: Skatblatt darstellen durch Random?

  Alt 10. Nov 2009, 18:32
Zitat von Lotus:
Es geht darum, das, falls ich Zahlen von 1-8 Zulasse, jede Zahl nur maximal 4x kommt. Demnach kommt 4x die 2, dann darf kein randomwert mehr die 2 annehmen.. an sich könnte ich eine zählvariable mitlaufen lassen, und jedes mal sagen, wenn i>4 dann neu wuerfeln... allerdings is das einfach mal nich ressourcenfreundlich
Wenn du jede Zahl 4 Mal zuläßt, dann kann es immernoch passieren, daß eine Farbe mehrfach vorkommt.

Nimm dir einfach ein Boolean-Array mit 32 Feldern (je Karte inkl. Farbe ein Feld) und wenn eine Karte gezogen wurde, dann wird diese darin markiert.

Wenn du nun eine neue Karte ziehen willst, dann wähle per Zufall irgendeine der 32 Karten aus,
schaue in dem Array, ob sie noch frei ist
und wenn nicht, dann wird so lange neu gezogen, bis eine freie Karte getroffen wurde.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#8

Re: Skatblatt darstellen durch Random?

  Alt 10. Nov 2009, 18:35
Die Listenvariante von sirius dürfte aber deutlich performanter sein. Abgesehen davon würde ich persönlich nicht nachzählen, wie oft eine Zahl gezogen wurde, sondern wie bereits vorgeschlagen 32 Karten nehmen und die Farbe mittels MOD bestimmen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Lotus

Registriert seit: 26. Feb 2007
85 Beiträge
 
Delphi 7 Personal
 
#9

Re: Skatblatt darstellen durch Random?

  Alt 10. Nov 2009, 18:39
hab ich vllt vergessen zu erwaehnen, aber die farbe darf vernachlaessigt werden, da nur die kartenwerte interessieren!
das mit dem boolean array hab ich mir auch schon überlegt gehabt, allerdings ist das einfach mal nicht elegant, immer wieder neu zu ziehen bis "zufällig" mal der wert stimmt..

gibts noch andere möglichkeiten außer einer liste?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#10

Re: Skatblatt darstellen durch Random?

  Alt 10. Nov 2009, 18:41
Wenn die Farbe keine Rolle spielt, würde ein DIV 8 genügen (bei Werten zwischen 0 und 31).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 Uhr.
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