anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Mo 23 Sep, 2019 03:34

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Random Wert nur 1x vergeben
BeitragVerfasst: Mo 22 Aug, 2011 21:40 
Offline
Newbie

Registriert: Sa 18 Sep, 2010 17:02
Beiträge: 7
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?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Random Wert nur 1x vergeben
BeitragVerfasst: Di 23 Aug, 2011 00:58 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3922
Wohnort: Basel
Geschlecht: Männlich
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Random Wert nur 1x vergeben
BeitragVerfasst: Di 23 Aug, 2011 08:30 
Offline
Newbie

Registriert: Sa 18 Sep, 2010 17:02
Beiträge: 7
Danke dir elli.

array_rand und array_diff_key hat uns sehr weitergeholfen

*Gefällt mir Button such*


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum