[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***]