Originariamente inviato da scimmiaparlante
una cosa così potrebbe funzionare...anche se con tanti elementi diventa un lavoro pesante
a seconda dei numeri degli if finali si decide la probabilità
Vedi te se può essere utile,a me scriverla non fa fatica
Codice PHP:
function estrai() {
//array di partenza da cui estrarre
$colori = array('bianco', 'nero', 'giallo', 'verde', 'rosso');
//array che tiene le estrazioni inizializzato con tutte le voci a 0
$conta[$colori.length];
for($i = 0; i < $colori.length; $i++) {
$conta[$i] = 0;
}
while(!in_array(3, $conta)){
//estrazione: $pescato contiene l'indice estratto
$pescato = array_rand($colori);
//l'elemento con lo stesso indice nell'array di conteggio viene incrementato
$conta[$pescato]++;
//al primo elemento basta una estrazione per essere ritornato
if($conta[0] == 1) return $colori[0];
//agli altri 3 --> ritorna l'ultimo pescato(che è per forza l'unico con 3)
elseif(in_array(3, $conta)) return $colori[$pescato];
}
}
Da quand'è che esiste length in php?
Comunque a mio parere una cosa del genere potrebbe andare
Codice PHP:
$lol = array('uno','due','tre','quattro','cinque','sei','sette','otto','nove','dieci');
$r = floor(rand(0,count($lol)-1)-rand(0,count($lol)/2));
$s = $r < 0 ? 0 : $r;
echo $lol[$s];
uno esce almeno ogni 4-5 volte