fork(34) download
  1. <?php
  2.  
  3. $items = array(
  4.  
  5. "Item 1" => 0.5, // porcentagens
  6. "Item 2" => 1,
  7. "Item 3" => 4,
  8. "Item 4" => 4.5,
  9. "Item 5" => 5,
  10. "Item 6" => 15,
  11. "Item 7" => 15,
  12. "Item 8" => 15,
  13. "Item 9" => 20,
  14. "Item 10" => 20
  15.  
  16. );
  17.  
  18. $valor = 1000; // valor do peso máximo e total dos itens
  19. $inicio = 1;
  20.  
  21. $array_elementos = array(); // array para sorteio
  22.  
  23. // cria o array para sorteio
  24. foreach($items as $nome => $porcentagem){
  25.  
  26. $val = ($valor * $porcentagem) / 100;
  27. $valorFinal = $val + $inicio - 1;
  28. $array_elementos[$nome] = $inicio."-".$valorFinal;
  29. $inicio = $valorFinal + 1;
  30.  
  31. }
  32.  
  33. // numero randômico "sorteio"
  34. // de 1 até o valor máximo do item mais "pesado"
  35. $num_rand = rand(1, $valor);
  36.  
  37. $elemento_sorteado = "";
  38.  
  39. // procura o elemento sorteado
  40. foreach($array_elementos as $nome => $peso){
  41. $valores = explode("-", $peso);
  42. if($num_rand >= $valores[0] && $num_rand <= $valores[1]){
  43. $elemento_sorteado = $nome;
  44. break;
  45. }
  46. }
  47.  
  48. echo $elemento_sorteado;
Success #stdin #stdout 0.02s 23688KB
stdin
Standard input is empty
stdout
Item 6