ponderar um sorteio com um campo

Started by rog, 13 de December , 2007, 11:09:05 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

rog

eu estava conversando com ums amigos sobre o assunto

temos um array de bixos e cada um tem uma nota de força

bixo 1 força 500
bixo 2 força 700
bixo 3 força 500
bixo 4 força 900

teria que fazer um sorteio aleatorio onde se leva em consideraçao a força num modo que

em 2600 sorteios o numero 1 seja sorteado 500 vezes, o numero 2 seja sorteado 700 vezes etc ....

como isso e aleatorio, pode ter uma percentagem de derivaçao de pertinença

qual seria a sua soluçao

rog
realty.sys is corrupt :  reboot the universe (Y/N)

Shady

Quoteem 2600 sorteios o numero 1 seja sorteado 500 vezes, o numero 2 seja sorteado 700 vezes etc ....

 Não entendi. E o resto dos bixos? Se a progressão for mantida, teremos as probabilidades:

 bixo 1 = 5/26
 bixo 2 = 7/26
 bixo 3 = 9/26
 bixo 4 = 11/26
 bixo 5 = 13/26

 Mas isso não pode acontecer, porque o total deve ser 26/26, mas com isso temos 45/26.


Mundus Vult Decipi

rog

a soluçao encontrada e baseada em proporçao

soma das força = 2600

sorteio aleatorio de numero entre 1 e 2600

um loop para achar a qual bixo pertence o numero

aqui o poc que eu codei

error_reporting(E_ALL);
#
$sleep = rand(1,3);
sleep($sleep);
#
session_start();
#
if(!isset($_SESSION['loop']))
   {
   $_SESSION['hamster'][0] = 500;
   $_SESSION['hamster'][1] = 1000;
   $_SESSION['hamster'][2] = 2000;
   $_SESSION['hamster'][3] = 2000;
   $_SESSION['hamster'][4] = 500;
   #
   $_SESSION['result'][0] = 0;
   $_SESSION['result'][1] = 0;
   $_SESSION['result'][2] = 0;
   $_SESSION['result'][3] = 0;
   $_SESSION['result'][4] = 0;
   #
   $_SESSION['FORCE_HAMSTER'] = array_sum($_SESSION['hamster']);
   $_SESSION['loop'] = 0;
   }
#
$_SESSION['loop']++;
#
$_SESSION['result'][poc()]++;
#
$display = "<li> boucle n° : ".$_SESSION['loop'];
#
foreach ($_SESSION['result'] as $in=>$val)
   {
      $display .= "<br> hamster n° : ".($in + 1)." - force : ".$_SESSION['hamster'][$in]." cumul des requêtes : {$val} - derivation : ".pertinence($in)."<br>";
   }
#
if($_SESSION['loop'] < 6000)
   {
   $display .= ("<SCRIPT LANGUAGE=\"JavaScript\"> document.location.href=\"".$_SERVER['PHP_SELF']."\"</script>");
   }
echo($display);
flush();
#
#   counter reset
#session_destroy();
#
##############################################################################################################
function poc(){
##############################################################################################################
$monrandom = rand(1,$_SESSION['FORCE_HAMSTER']);
$a = 0;
$trouve = false;
#
while(!$trouve)
      {
    $monrandom -= $_SESSION['hamster'][$a];
   #
    if ($monrandom <= 0)
       {
        $trouve = true;
        $result = $a;
         }
   $a++;
   }
return $result;
}
##############################################################################################################
function pertinence($index){
##############################################################################################################
#
$coef = $_SESSION['FORCE_HAMSTER'] / $_SESSION['loop'];
# cumul hamster réaligné
$realign = $_SESSION['result'][$index] * $coef;
#
$pertinence = round($realign / $_SESSION['hamster'][$index],2);
#
return $pertinence;
}
##############################################################################################################

realty.sys is corrupt :  reboot the universe (Y/N)