Zufallsefeckt?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Max L
Mitglied
Beiträge: 7
Registriert: 02.12.2005 20:47

Zufallsefeckt?

Beitrag von Max L »

Hi!
Ich habe vor ein Diebspiel zu machen.
Aber ich check net, wie man einen Zufallsefeckt wie diesen hier

http://www.orbitalpirates.de/attack.php?id=416

Also, den normalen Zuaffls efeckt kenn ich, aber ich möchte warscheinlichkeiten machen, zum beispiel wenn man drauf klickt wirt fast immer "7" kommen, aber ab und zu auch "6" oder "8"
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag von fanrpg »

rand() :wink:
Max L
Mitglied
Beiträge: 7
Registriert: 02.12.2005 20:47

Beitrag von Max L »

Was??? Etwas genauer bitte...
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

etwas genauer
KB:knigge
Max L
Mitglied
Beiträge: 7
Registriert: 02.12.2005 20:47

Beitrag von Max L »

axo.
ak, habs jetz so gemacht, aber dann kommt immer nur de selbe Zahl.
Ich glaube ich werde das nie checken.
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag von fanrpg »

Code: Alles auswählen

$zufallszahl = mt_rand(1, 4);
echo $zufallszahl; // Gibt eine Zufallszahl zwischen 1 und 4 aus.
Max L
Mitglied
Beiträge: 7
Registriert: 02.12.2005 20:47

Beitrag von Max L »

ok, jetzt gehts bei mir
Aber, ich hab dann noch eine Frage:
Angenomen, es gibt jetzt 3 Zufallsefeckte.
Aber alle Zufälle, haben eine Summe von "10"
Geht sowas?
Benutzeravatar
Schumi
Ehemaliges Teammitglied
Beiträge: 4925
Registriert: 07.10.2002 12:37

Beitrag von Schumi »

Code: Alles auswählen

do
{
        $zahl1 = mt_rand(0, 10);
        $zahl2 = mt_rand(0, 10);
        $zahl3 = mt_rand(0, 10);
} while ( $zahl1 + $zahl2 + $zahl3 != 10);
Damit werden die Zufallszahlen so lange neu erzeugt, bis deren Summe zehn ergibt.
naderman
phpBB.com
Beiträge: 823
Registriert: 01.08.2003 18:23
Wohnort: Berlin
Kontaktdaten:

Beitrag von naderman »

Schumi hat geschrieben:

Code: Alles auswählen

do
{
        $zahl1 = mt_rand(0, 10);
        $zahl2 = mt_rand(0, 10);
        $zahl3 = mt_rand(0, 10);
} while ( $zahl1 + $zahl2 + $zahl3 != 10);
Damit werden die Zufallszahlen so lange neu erzeugt, bis deren Summe zehn ergibt.
Eine vermutlich schnellere Alternative wäre:

Code: Alles auswählen

$zahl1 = mt_rand(0, 10);
$zahl2 = mt_rand(0, 10 - $zahl1);
$zahl3 = mt_rand(0, 10 - $zahl1 - $zahl2);
Die obere Schleife könnte nämlich problemlos zu einer Endlosschleife werden, auch wenn das bei so kleinen Zahlen recht unwahrscheinlich ist. Der Nachteil ist, dass mit der zweiten Variante nicht alle Werte für jede Zahl gleich wahrscheinlich sind. Bei $zahl1 sind alle Zahlen von 0 bis 10 gleich wahrscheinlich, bei $zahl2 sind Zahlen die kleineren Zahlen wahrscheinlicher.

Man muss sich also fragen, ob es einem so wichtig ist gleiche Wahrscheinlichkeiten zu erreichen, dass man riskiert, dass die Laufzeit auch mal was länger wird, dann wäre Schumis Weg der bessere oder ob man einfach nur schnell zu einem Ergebnis kommen will, dann sollte man meine Methode anwenden.

naderman
Zuletzt geändert von naderman am 03.12.2005 17:19, insgesamt 1-mal geändert.
Max L
Mitglied
Beiträge: 7
Registriert: 02.12.2005 20:47

Beitrag von Max L »

Ähm, ich habe jetzt beide alternativen ausprobiert, aber ich habe folgendes problem: Es dauert total lange bis die 3 Zahlen angezeigt werden. Und manchmal kommt dann an der Stelle wo die Zahl stehen soll, nur irgendeine Fehlerschrift...
Antworten

Zurück zu „Coding & Technik“