Hallo Bis her habe ich mich mit dem Algorithmus eines auslaufenden Würfels nicht beschäftigt! Habe das auslaufen immer zufällig oder 1-6 gemacht. Dies ist aber nicht richtig. Man muss immer von der Zahl der Kante oder Ecke neu berechnen. z.B. Ecke 6,3,5---> kann nur auf die 6,3,5 fallen oder auf die Kante 3,6 -- 3,5-- 6,5 usw,usw Wer kennt die Lösung oder findet sie im Netz?! Gruß
Jens K. schrieb: > Wer kennt die Lösung oder findet sie im Netz?! Du bist gerade drauf und drann, dir eine Menge Mehrarbeit aufzureissen. Letzten Endes ist nur wichtig, dass dein Würfel ja immer auf einer der 6 Seiten liegen bleibt. WEnn die Verteilung dieses Liegenbleibens korrekt ist (Gleichverteilung), dann ist auch der Würfel per Definition richtig, selbst wenn zwischendurch Würfelseiten aufscheinen, die physikalisch nicht möglich sind. Das Problem: Gerade bei ZUfallszahlen muss man sehr vorsichtig sein. Mit einer unbedachten und harmlos aussehenden Programmmodifikation hat man sich sehr schnell die Gleichverteilung zerstört. Der Würfel ist dann in dem Sinne gezinkt, dass nicht mehr alle 6 Seiten die gleiche Wahrscheinlichkeit haben aufzuscheinen. In diesem Sinne: Wenn du es tatsächlich vom Beginn der Rotation bis zum Stillstand simulieren willst, dann wird dir nicht viel anderes übrig bleiben, als ein physikalisches Modell mit Kräften und Momenten aufzubauen um den Fall des Würfels zu simulieren. Ob da dann allerdings die gewünschte Gleichverteilung rauskommt .... weiß ich nicht. Theoretisch wird sie das wohl tun, aber aus Erfahrung kann ich nur sagen: Vorsichtig sein. Eine Gleichverteilung ist schneller zerstört, als man Piep sagen kann. Alternativ kannst du natürlich für die letzten 3 oder 4 Auslaufkipper eines Würfels ausgehend von einer Zahl immer dieselbe Abfolge an physikalisch möglichen 'Fortsetzungen' dir im Programm haben. Mittels Zufallszahl ermittelst du dann nicht die Endlage sondern die Lage vor diesen 4 Auslaufkippern und lässt dann den Würfel bei jeder Zahl die bei dieser Zahl immer gleichen 4 Auslaufkipper machen. Die kann man sich zb in einem 2D Array speichern.
Dich interessiert doch nur das Endergebniss. Über welche Seiten der Würfel dahingerollt ist, tut doch nix zur Sache. Und das Endergebniss kann nunmal nur 1-6 sein, ausser du willst noch "Würfel auf Kipp am Spielfeldrand" berücksichtigen, wobei das in meinen Augen überflüssig wäre.
Man könnte natürlich (erstmal ohne sich den Weg zu überlegen) das Endergebnis bestimmen, und dann einfach solange nach deinen Regeln (von Zahl ... kann man nur nach ... rollen) rollen lassen, bis die vorher ermittelte Endzahl liegt. Das ist einfach zu realisieren, und sollte deiner Beschreibung genügen.
Klaus Wachtler schrieb: > Man könnte natürlich (erstmal ohne sich den Weg zu überlegen) das > Endergebnis bestimmen, und dann einfach solange nach deinen Regeln (von > Zahl ... kann man nur nach ... rollen) rollen lassen, bis die vorher > ermittelte Endzahl liegt. Hmm. Du bringst mich auf eine Idee. Wenn alles nichts mehr hilft, dann zäumt man eben das Pferd von hinten auf. Man ermittelt zuerst die Endzahl. Für jede Zahl hat man eine Tabelle, aus der man ablesen kann, wie man zu dieser Zahl gelangen kann. Aus den dort vorgefundenen Möglichkeiten (sind immer 4 Stück), wählt man per Zufall eine aus. Mit diesem so gefundenen Vorgänger macht man das gleiche Spielchen, und so weiter und so weiter. Natürlich merkt man sich alle diese Vorgänger in einer Liste (kann auch eine zufällige Anzahl an Vorgängern in einem gewissen Rahmen sein). Spielt man diese Liste dann in umgekehrter Reihenfolge ab, dann hat man eine gültige Zugfolge, die in der zuvor bestimmten Endposition mündet. Und da man weiß, dass diese Endposition zuvor unabhängig erzeugt wurde, hat man auch die Gewähr, den Würfel nicht zu zinken.
Es ist doch nur eine mathematische Spielerei! Ich dachte das es schon eine Lösung dafür gibt,Würfel gibt es doch schon ewig. Meine Lösungsform besteht bisher: Der Tastendruck startet eine Zählvariable,welche nach meiner Meinung absolut zufällig ist. die Anzeige läuft schnell und nicht erkennbar durch.(1-6 /1-6) Nach loslassen des Tasters wird der Wert 1-6 gespeichert. Jetzt kommt das Ausrollen wieder mit 1-6 Ab einen bestimmten Zeitwert werden 4* Zufallsanzeigen generiert, welche immer langsamer werden. Zum Abschluss erscheint die gewählte Zufallszahl! Das ist eigentlich recht einfach, aber eben nicht exakt.
Jens K. schrieb: > Bis her habe ich mich mit dem Algorithmus eines auslaufenden Würfels > nicht beschäftigt! Es gibt auch keinen Algorithmus. Den gibt es für keinen Zufallsprozeß. > Habe das auslaufen immer zufällig oder 1-6 gemacht. > Dies ist aber nicht richtig. > Man muss immer von der Zahl der Kante oder Ecke neu berechnen. > > z.B. > Ecke 6,3,5---> kann nur auf die 6,3,5 fallen > oder auf die Kante 3,6 -- 3,5-- 6,5 > > usw,usw > > Wer kennt die Lösung oder findet sie im Netz?! Da muß man nur ganz kurz drüber nachdenken. In dem verwendeten Modell zeigt der Würfel immer irgendeine Zahl. Im Modell liegt er also auf einer Fläche und zeigt die Zahl der gegenüberliegenden Fläche. Aus dieser Lage kann er direkt nur auf eine der 4 Seitenflächen kippen. Ob direkt über eine Kante oder schräg über eine Ecke, ist dabei unerheblich. Als "Würfelexperte" ist dir sicherlich bekannt, daß die Zahlen auf gegenüberliegenden Flächen stets die Summe 7 haben. Wenn der Würfel im Schritt N die Augenzahl Z zeigt, dann kann er im Schritt N+1 eine der Augenzahlen aus der Menge {1, 2, 3, 4, 5, 6} - {Z, 7-Z} zeigen. Du brauchst in jedem Schritt eine Zufallszahl, die eine der 4 Möglichkeiten auswählt. XL
Jens K. schrieb: > Das ist eigentlich recht einfach, aber eben nicht exakt. Wie immer im Leben: Es gibt einfache Näherungen und es gibt die etwas aufwändigeren Lösungen. Will man exakt sein, muss man eben etwas Aufwand treiben. So wild ist der Aufwand auch wieder nicht. Ganz im Gegenteil: ist eine gute Übung zum Arbeiten mit Arrays. Die meisten Neulinge stehen damit sowieso auf Kriegsfuss und bräuchten in diesem Bereich mehr Übung.
:
Bearbeitet durch User
.... Einfacher ausgedrückt auf eine Zahl kann außer ihr selbst auch niemals ihr 7erkomplement direkt folgen. Alle anderen sind zulässig. Alles klar? Ich würde also im fall einer Zufallszahl mit einem dieser beiden Werte, bezogen auf die letzte Zahl, diese verwerfen (nicht anzeigen) sondern eine neue zufallszahl ermittelln und die Anzeigedauer von einer zur nächsten Anzeige leicht erhöhen. Die Verwendung eines Arrays ist da wohl oversized. Viel Spass noch beim Würfeln
:
Bearbeitet durch User
Das würde ich aber ehrlich gesagt auf dem PC mit 100000 simulierten Würfen exzessiv testen, ob die Verteilung dann noch stimmt. Aus dem Bauch raus würde ich sagen: ja, passt. Aber aus dem Bauch raus bin ich bei solchen Sachen schon zu oft auf die Schnauze gefallen.
wenn die gleich Verteilung des Generators stimmt stimmt auch die Verteilung bezüglich der Aufeinanderfolge gleicher Zahlen und deren 7erkomplementen. Wichtig ist den gesamten Wertebereich des Generators gleichmäßig auf die sechs Anzeigewerte abzubilden. Namaste
Hallo Werde als Grund erst einmal Dies verwenden! Beitrag "Re: Algorithmus eines auslaufenden Würfels?" Beim Auslaufen nur noch bei den nicht möglichen Varianten(keine Anzeige) einen Neuwurf starten.Dadurch wird auch zufällig das ausrollen verlängert. Beim letzten Ausrollen, vor Anzeige der gewählten Zufallszahl (Tasterzeit), wird darauf geachtet das die Ziffer auch Möglich ist.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.