anpera.net
http://anpera.homeip.net/phpbb3/

Random Wert nur 1x vergeben
http://anpera.homeip.net/phpbb3/viewtopic.php?f=34&t=5358
Seite 1 von 1

Autor:  Radon [ Mo 22 Aug, 2011 21:40 ]
Betreff des Beitrags:  Random Wert nur 1x vergeben

Guten Abend,
wir sind gerade dabei ein Turnier für unsere Spieler zu schreiben.

Jetzt sind wir an einen Punkt angelangt wo wir nicht weiter wissen. Und zwar möchten wir ein Zufallsprinzip mit einbringen wo Spieler in diesem "Abenteuer" in einen Beutel greifen und einen gegenstand heraus holen. Dieser gegenstand soll aber nicht doppelt vorkommen. Also kein 2. Spieler soll den selben gegenstand herausholen wie es bereits ein anderer getan hat.

switch(e_rand(1,24)){ wäre hier schwachsinnig da es ja nur 1 von 24 Gegenständen herausholen kann. Dieses Randomverfahren würde aber bei jedem User neu anfangen. Demnach besteht eine 75%ige Chance, dass mehrere User den selben Gegenstand haben.

Kann mir da einer eine Funktion sagen womit ich unser Vorhaben realisieren kann sofern es realisierbar ist?

Autor:  Eliwood [ Di 23 Aug, 2011 00:58 ]
Betreff des Beitrags:  Re: Random Wert nur 1x vergeben

Eine Möglichkeit ist die Array-Funktion shuffle(), in dem die Sequenz bereits vorher in der Datenbank gespeichert wird und jeder User einfach nur das oberste Item bekommt, oder über array_rand() und array_diff_key().
In jedem Fall müssen die User nacheinander ziehen, es muss sichergestellt sein, dass dieses Verteilarray nur ein einziges mal in valider Form existiert, da es sonst zu Fehlern kommen kann. Am besten erledigt die Zuteilung ein einziges Script.

Eine dritte, noch weniger gute Variante ist, die bereits verteilten Gegenstände zu speichern - und so lange Würfeln, bis eine Zahl kommt, die noch frei ist. Dauert im schlimmsten Fall aber ewig ;)

Btw ist e_rand() für solche Fälle nicht geeignet. e_rand() hat für die beiden Extrem-Werte nur eine ca halb so grosse Wahrscheinlichkeit wie für jede andere Zahl. Für e_rand(1,3) fallen ~50% der Fälle auf 2, 25% auf 1 und 25% auf 3.

Autor:  Radon [ Di 23 Aug, 2011 08:30 ]
Betreff des Beitrags:  Re: Random Wert nur 1x vergeben

Danke dir elli.

array_rand und array_diff_key hat uns sehr weitergeholfen

*Gefällt mir Button such*

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/