Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Probabilità con PHP

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    218

    Probabilità con PHP

    Ciao a tutti, vorrei chiedervi un vostro parere.

    Se dovreste creare uno script per far uscire, ad esempio, un dado a 3 facce, impostando delle percentuali di riuscita in base al lato, come fareste?

    Io farei così, ma volevo sentire se c'è qualcun'altro che ha qualche metodo migliore/più pulito/semplice.

    Codice PHP:
    $random mt_rand(1100);

    $facce = array(
        
    'lato_1' => array(150),   // 50%
        
    'lato_2' => array(5180),  // 30%
        
    'lato_3' => array(81100// 20%
    );

    foreach (
    $facce as $lato => $range)
    {
        if (
    $random >= $range[0] && $random <= $range[1])
        {
              
    $lato_uscito $lato;
              
              break;
        }
    }

    echo 
    "E' uscito {$lato_uscito}"

  2. #2
    forse un metodo più "comodo" in modo da dare direttamente le percentuali

    Codice PHP:
    function rollDice(&$f) {
        
    $random mt_rand(1,100);
        
    $lastprob=0;
        foreach(
    $f as $faccia=>$prob) {
            if(
    $random<=$lastprob+$prob) return $faccia;
            
    $lastprob+=$prob;
        }
        die(
    "Errore con i parametri probabilità dell'array");
    }

    $facce = array(
        
    'lato_1' => 50,   // 50%
        
    'lato_2' => 30,  // 30%
        
    'lato_3' => 20 // 20%
    );
    // usage: 
    echo "E' uscito il lato " rollDice($facce);

    // test
    $result array_fill_keys(array_keys($facce),0);

    for(
    $i=0$i<100000$i++) {
        
    $result[rollDice($facce)]++;
    }

    print_r($result); 

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    218
    Il metodo che mi hai consigliato è perfetto, con qualche modifica l'ho perfettamente adattato alle mie necessità. Mi serviva questo modo più diretto, grazie.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.