Newsgroup: it.comp.www.php
Titolo: numero casuale legato al giorno

Vorrei generare un numero casuale che rimanga lo stesso per tutta la durata
del giorno. Dovrei inizializzare la funzione srand() con la data giusto (in
particolare il giorno)?
Come si fa?
Grazie
Fabrizio

"fabrizio" <fabs...@liberoNOSPAM.it> ha scritto nel messaggio
news:gIwPa.4124$sj6....@tornado.fastwebnet.it...

dovresti utilizzare il crontab...
alle 00 scrivi su un file di testo un numero che poi richiami nei tuoi
scripts
senza crontab
quando qualcuno si collega alle pagine del sito controlli la data di
modifica del file di testo e se è del giorno prima lo aggiorni con il numero
del nuovo giorno... se è stato modificato il giorno stesso lo lasci perdere
;)
-- 
www.pixael.com
consulenze per la creazione e la promozione di siti internet
ideazione materiale pubblicitario

 wrote in message
bem9hj$iou$1...@lacerta.tiscalinet.it...


 possibile che non esiste una funzione che ritorni il numero del giorno?
Il numero del giorno si, con date() usando i giusti parametri... ma se a te
serve un numero CASUALE che rimanga lo stesso per tutto il giorno... da
qualche parte devi fare in modo di ricordartelo.
Se ti serve solo un numero relativo al giorno potresti usare il giorno
stesso, il timestamp della data attuale alle 00:00, un numero calcolato in
base alla data (es: $gg.($gg%4).($mm*2+$aaaa)) ma dovresti controllare la
formula che usi per evitare che ci possano essere ripetizioni.
Ludovico Grossi

 giorno?
1^ Quota, per pippo quota!!!
2^  
date ("d");
oppuer
date ("j");

[CUT]
http://php.dopoil.com/faq.php?NGRules
Gusher.

 Gusher.
Ciao Gusher, mi illumini a cosa ti riferisci? Non riesco a capire quale
mancanza ci sia e saperlo mi puņ aiutare a non commettere errori.
Grazie e buona giornata
-- 
Effe8

...

se come numero casuale 30703 ti fa proprio schifo puoi usare
bcmod(bcpow(date("mdy",time()),13),199777) che è quasi come fare rand()
P.s.
13 e 199777 sono del tutto arbitrari e costituiscono il seme della funzione

 mancanza ci sia e saperlo mi puņ aiutare a non commettere errori.
Credo si riferiscano a questa parte delle regole del NG:
Citare (anche chiamato quotare)
Prima devi citare il testo, poi dai la risposta (non si legge prima la
risposta e poi la domanda). Non riportare tutto il testo, ma elimina le
parti non importanti per capire la risposta.
Anch'io sono stato cazziato alcune volte per questo, ora perņ inzio ad
imparare ;)
ciao,
ste

 parti non importanti per capire la risposta.
Grazie 1000
-- 
Effe8

 possibile che non esiste una funzione che ritorni il numero del giorno?
si ma non volevi un numero casuale per tutto il
giorno????????????????????????????


 giorno????????????????????????????
Si, ma poichè la funzione rand in realtà restituisce un numero
pseudo-casuale in base ad uno impostato nella srand (infatti si usano i
millesimi di secondo o i secondi così il numero su cui si basa l'algoritmo
cambia molto velocemente generando numeri "casuali") pensavo che
inizializzando la srand con un valore che rimanga lo stesso per tutto il
giorno (il numero del giorno appunto) questa mi restituiva sempre lo stesso
valore per la durata del giorno. Non se il mio ragionamento è giusto per il
PHP, ma in C è così. ILLUMINATEMI!
GRAZIE
Fabrizio
PS: Gusher va bene così? ;)

 PHP, ma in C è così. ILLUMINATEMI!
Da mia esperienza il numero è quasi uguale se lo generi a distanza di poco
tempo. Dovresti fare delle prove restringendo il campo d'azione del
risultato di output. Vedi esempio sotto.
// Genera numero casuale
   function crea_seme() {
      list($usec, $sec) = explode(' ', microtime());
      $test = (float) $sec + ((float) $usec * 100000000);
	  return (float) $sec + ((float) $usec * 100000000);
   }
   srand(crea_seme());
   $random = rand(10000,99999);
Con l'istruzione *$random = rand(10000,99999);* generi il campo del tuo
numero casuale in questo caso da 10000 a 99999. La puoi cambiare magari
mettendo 11513,11514 e vedere che succede.
Comunque concettualmente parlando non mi sembra il modo migliore per
risolvere il problema in quanto sarebbe meglio agire generando un file
temporaneo con questo benedetto numero all'interno del tuo computer e
andarlo a leggere previa verifica che quel file non sia più vecchio di 24
ore, altrimenti se ne genera uno nuovo.
-- 
Effe8

 tutto il giorno (il numero del giorno appunto) questa mi restituiva
Bastava provare. In meno di un minuto ho buttato giu` questo:
<?php
	srand(date('d'));
	print rand(0,1000);
?>
che restituisce sempre lo stesso numero.
Bye.

 che restituisce sempre lo stesso numero.
Ok!!!! Era proprio quello che volevo sentire! Infatti in questo modo il
numero generato "casualmente" rimane lo stesso per tutta la durata del
giorno.
Grazie 1000
Fabrizio

Bye.
Questo va bene se vuoi che la serie dei numeri restituiti si ripeta ad ogni inizio
mese 
oppure      srand(date('z'));     per la serie ripetuta ogni anno 
oppure      srand(date('Yz'));   per la serie diversa ogni giorno di ogni anno...
Ti consiglierei di usare mt_srand e mt_rand.
da' un risultato un po' piu' casuale e differenziato
<?php
	mt_srand(date('Yz'));
	$zz=mt_rand(0,1000);
	echo($zz);
?>
Salutissimi
Roberto