WinFuture-Forum.de: Zufallsgenerator Php - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Zufallsgenerator Php begrenzte ausgabe


#1 Mitglied ist offline   amalbhalbe 

  • Gruppe: aktive Mitglieder
  • Beiträge: 643
  • Beigetreten: 14. Mai 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:BMW E38 740i V8 286 PS 4.4L Hubraum
  • Interessen:Design is the production of braindysentery

geschrieben 18. Oktober 2007 - 13:46

Hi,

also ich bin etwas am grübeln,

ich versuche Momentan einen Zufallsgenerator zu basteln das klappt soweit auch mit mt_rand ganz gut - allerdings soll eine Bedingung erfüllt werden, und zwar als Beispiel:

$inhalt = array ("bla1","bla2","bla3","bla4","bla5");

$ausgabe = mt_rand(0,count($inhalt)-1);
echo "<font size=\"3\"> $inhalt[$ausgabe] </font>";

so ok - klappt ja auch alles ... jetzt will ich aber z.b das "bla2" MAXIMAL 30 mal mitberechnet wird - also , das beim 30. aufruf von "bla2" der Array Eintrag einfach nicht mehr interpretiert wird. bzw "gelöscht" oder wie auch immer - ich will also die einzelnen Einträge beschränken!

Freundlicher Helfer gab mir den Tipp ich solle einen Counter in das ganze integrieren der bei z.b eben 30mal aufgerufenem "bla2" die variable killt .. klingt ja auch logisch nur krieg ichs absolut nicht auf die Reihe.

Ich bitte um Eure Hilfe is relativ dringend

mfg
Pc is my life, amd my world, intel my enemy and Linux my Hell
0

Anzeige



#2 Mitglied ist offline   dblay 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.246
  • Beigetreten: 18. März 07
  • Reputation: 1

geschrieben 18. Oktober 2007 - 19:52

Du könntest z.B. mittels array_flip ein Array erstellen, welches als Schlüssel die Werte aus dem $inhalt-Array enthält. Dieses neue Array verwendest du dann dazu, um die Ausgabe eines bestimmten Wertes zu zählen, z.B. mittels array_key_exists.

$inhalt = array ("bla1","bla2","bla3","bla4","bla5");

$zaehler = array_flip($inhalt);

// Allen Elementen den Anfangswert "Null" zuweisen
foreach($zaehler as $wert=>$anzahl) {
   $zaehler[$wert] = 0;
}

$ausgabe = mt_rand(0,count($inhalt)-1);

// Zähler für Wert um 1 erhöhen und Wert ggf. aus $inhalt löschen
if(array_key_exists($ausgabe, $zaehler)) {
   $zaehler[$ausgabe] += 1;
   if($zaehler[$ausgabe] >= 30) {
	  // array_search findet den zum Wert gehörenden Schlüssel
	  unset($inhalt[array_search($ausgabe, $inhalt)]);
   }
}

echo "<font size=\"3\"> $inhalt[$ausgabe] </font>";
Edit: noch einen kleinen Fehler beseitigt.

Hab das jetzt nicht getestet, ist einfach nur so eine Idee. Jedenfalls wird ein Wert so automatisch aus dem $inhalt-Array gelöscht, nachdem er z.B. 30mal verwendet wurde. Deswegen braucht die echo-Anweisung auch kein if mehr, denn wenn beim 30. Mal der Wert aus dem $inhalt-Array gelöscht wird, soll er ja dennoch ausgegeben werden. Danach taucht der Wert sowieso nicht mehr auf.

Hoffe ich konnte dir helfen ;)

Dieser Beitrag wurde von dblay bearbeitet: 18. Oktober 2007 - 19:54

Zeit ist, was verhindert, dass alles gleichzeitig passiert.
0

#3 Mitglied ist offline   Skaroth 

  • Gruppe: aktive Mitglieder
  • Beiträge: 554
  • Beigetreten: 08. September 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Wien

geschrieben 18. Oktober 2007 - 20:12

Ich kann dir den Source Code meiner Seite (www.skaroth.net) schicken, da ist auchn Zufallsgenerator ;)

Der Code ist aber noch nicht objektorientiert und daher ein wenig unübersichtlich.
0

#4 Mitglied ist offline   amalbhalbe 

  • Gruppe: aktive Mitglieder
  • Beiträge: 643
  • Beigetreten: 14. Mai 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:BMW E38 740i V8 286 PS 4.4L Hubraum
  • Interessen:Design is the production of braindysentery

geschrieben 18. Oktober 2007 - 20:48

@dblay - Danke für das Script, allerdings funzt das so nicht ganz , er zählt die counts nich weiter =/ und vorallem wären hier alle array inhalte gleichermaßen betroffen. ich bräuchte ein script wo ich jedem array eintrag ne eigene wertung geben kann wie oft er erscheinen darf. ... ok ich denk das kann man da draus sicher basteln allerdings.. wie gesagt ich bin noch net so versiert mit dem ganzen =/ sry -


@skaroth ... wäre sehr sehr sehr nett .. nru die Frage kann dein Source das was ich brauche? also was ich eben oben zu dblay beschrieben habe? .. .. bin momentan echt am verzweifeln mit dem ganzen
Pc is my life, amd my world, intel my enemy and Linux my Hell
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0