• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

php random

BigSanch

Neues Mitglied
Hi

Bin mir net ganz sicher wonach ich da suche und unter php random hab ich sowas no net gefunden, also mal ne theoretische Frage:

Ist es möglich wenn ich etwas (beispiel: 1-10) random generieren löasse per PHP, an zu geben, dass nun beispiel die 5 zu 50% und der rest (1-4, 6-10) auch 50% generiert werden soll? Also dass am häufigsten die 5 generiert wird?

Wenn ja wäre nett, wenn ihr mir nen Denkanstoss geben würdet

MfG BigSanch
 
PHP:
<?php

function pick($weights)
{
    $sum  = array_sum($weights);
    $rand = mt_rand(0, $sum - 1);
    $k    = 0;
    $res  = null;

    foreach ($weights as $outcome => $weight) {
        $k += $weight;
        if ($rand < $k) {
            $res = $outcome;
            break;
        }
    }

    return $res;
}

/* Lies: Die  '1' wird in 1 von 18 Fällen gezogen,
 *       die  '2' wird in 1 von 18 Fällen gezogen,
 *       ...
 *       die  '5' wird in 9 von 18 Fällen gezogen,
 *       ...
 *       die '10' wird in 1 von 18 Fällen gezogen.
 */

$weights = array(
     '1' => 1,
     '2' => 1,
     '3' => 1,
     '4' => 1,
     '5' => 9,
     '6' => 1,
     '7' => 1,
     '8' => 1,
     '9' => 1,
    '10' => 1
);

for ($i = 0; $i < 50; $i++) {
    echo pick($weights) . ", ";
}
 
Zurück
Oben