Schnellster Weg, um ein Array zufällig zu mischen, basierend auf den Wahrscheinlichkeiten in PHP?Php

PHP-Programmierer chatten hier
Anonymous
 Schnellster Weg, um ein Array zufällig zu mischen, basierend auf den Wahrscheinlichkeiten in PHP?

Post by Anonymous »

Ich habe ein Array mit Werten und Wahrscheinlichkeiten (oder in PHP, Tasten und Werten): < /p>

Code: Select all

Value   Probability
John    3
Peter   2
Paul    1
< /code>
Ich möchte dieses Array mischen, aber die Reihenfolge von der Wahrscheinlichkeit beeinflusst werden. Das heißt, im Durchschnitt sollte John in der Hälfte der Zeit ganz oben auf der Liste erscheinen, Peter in einer dritten Zeit und Paul ein sechstem der Zeit usw.* Die durchschnittliche Reihenfolge über Tausende von Mischungen sollte der oben angegeben sein.John
John
John
Peter
Peter
Paul
< /code>
< /li>
  Verschüttet dieses Array, z. B.:
John
Paul
Peter
John
John
Peter
< /code>
< /li>
  Entfernen Sie die Duplikate und lassen Sie die erste Instanz: < /p>
John
Paul
Peter
< /code>
< /li>
< /ol>
In PHP -Code könnte dies in etwa so aussehen: < /p>
$items = array(
'John' => 3,
'Peter' => 2,
'Paul' => 1
);

$probabilities = array();
foreach($items as $item => $value){
$interim = array_fill(1, $value, $item);
$probabilities = array_merge($probabilities, $interim);
}

shuffle($probabilities);

$result = array_unique($probabilities);

print("".print_r($result,true)."");
< /code>
 Gibt es eine schnellere Möglichkeit, dies zu tun? />Person P1  P2  P3
John   3/6 2/6 1/6
Peter  2/6 2/6 2/6
Paul   1/6 2/6 3/6
< /code>
Beachten Sie, dass die Wahrscheinlichkeiten für den zweiten und dritten Rang aus der Wahrscheinlichkeit für den ersten Rang folgen und in den ursprünglichen Daten nicht explizit angegeben sind. Sie werden hier nur zu Ihrer Bequemlichkeit präsentiert, weil jemand in den Kommentaren unten gefragt wurde.John 3  ← line 1
Peter 2
Paul 1
Simon 6
Robert 2
William 1
...
Sean 1  ← line 786

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post