[RoLUG] Annuncio progetto e richesta consigli su un algoritmo
Ferdinando Pucci
rolug@lists.linux.it
Mon, 17 Mar 2003 22:14:28 +0100
On Mon, 17 Mar 2003 10:17:37 +0100
Roccatello Eduard <eduard@box.it> wrote:
> non posso portare tutto su linux
> rapidamente)? :-)
Cmq anche a cambiare host ti ci vuole del tempo :-)
> si infatti su 5 refresh mi è apparso 4 volte lo stesso banner ]:-)
Sono abbastanza sicuro dell'algoritmo che ho fatto, anche se avevo molto
sonno... Eccolo ve lo riporto:
global $nb_supp,$rand_max,$data_file;
mt_srand(time());
$rand=mt_rand(1,$rand_max);
$side=sqrt(((float)$rand_max)*2); //square's side of area = $rand_max * 2
$unit_side=$side/$nb_supp;
$unit_area=$unit_side*$unit_side;
for ($i=$nb_supp; $i>0; $i--) {
$tmp_prob_up=$unit_area*$i*$i/2; //the higher $nb_supp the higher the probability to be shown
$tmp_prob_dwn=$unit_area*($i-1)*($i-1)/2;
if ($rand>$tmp_prob_dwn&&$rand<=$tmp_prob_up) {
$supp=file($data_file);
echo $supp[$i-1]; <---qui sceglie quale mostrare
break;
}
}
E' piccolo ma mi pare funzioni bene. Per partorirlo :-) ho pensato all'integrale
da 0 a $rand_max di una retta a 45°. Se hai cliccato troppo di seguito, non so perche ma
sembra quasi che non ricarichi la pagina e un'eventuale echo di $rand da lo stesso valore.
Ciao!
--
[********************************Ferdinando <nerula> Pucci***]
[***Farmaceutical Chemistry student at http://www.unife.it***]
[**************Rovigo Linux user at http://rovigo.linux.it***]
[****Counted as Linux user n.250527 at http://count.li.org***]