Un Evento Unico. 5 Sale. 27 Interventi. SEO, SOCIAL, E-Commerce, Mobile, Turismo.
CLICCA QUI e SCOPRI DI PIù X Chiudi
 
Forum GT: Condividiamo idee e conoscenza Forum GT: Condividiamo idee e conoscenza


Condividi questo contenuto nei Social Network:
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito.


Vai indietro   Forum per Webmaster: Condividiamo Idee e Conoscenza > Sviluppo e Gestione siti web > Php - Mysql
Benvenuto! Forum Regole FAQ Lista utenti Calendario Segna come letti


Rispondi
 
LinkBack Strumenti di discussione
Vecchio 30-12-08, 16:28   #1 (permalink)
User Newbie
 
Data di registrazione: Aug 2005
Messaggi: 9
Generatore numeri casuale random.

Ciao a tutti,

ho questa funzione che lavora per generare numeri casuali. Talvolta accade che esce perchè evidentemente c'è un numero ripetuto nonostante il ciclo if.

Come posso fare per avere l'assoluta certezza che non venga MAI prodotto un errore??

Grazie,

Marco Parodi




Codice PHP:
$random_number_1=array(); 
while(
count($random_number_1)!=12) { 
srand((double)microtime()*1000000); 
$nuovo_valore_1=rand(1,100); 
if (!
in_array($nuovo_valore_1$random_number_1)) { 
$random_number_1[]=$nuovo_valore_1



$numero1   $random_number_1[0];
$numero2   $random_number_1[1];
$numero3   $random_number_1[2];
$numero4   $random_number_1[3];
$numero5   $random_number_1[4];
$numero6   $random_number_1[5];
$numero7   $random_number_1[6];
$numero8   $random_number_1[7];
$numero9   $random_number_1[8];
$numero10  $random_number_1[9];
$numero11  $random_number_1[10];
$numero12  $random_number_1[11];

echo 
"<strong><p>Generazione archivio terminata!</p></strong>
$numero1, $numero2, $numero3, $numero4, $numero5, <br/>
$numero6, $numero7, $numero8, $numero9, $numero10, <br/>
$numero11, $numero12"


Ultima modifica di Samyorn : 30-12-08 20:00.
parodix non in linea   Rispondi citando
Vecchio 01-01-09, 16:08   #2 (permalink)
User
 
Data di registrazione: May 2008
Messaggi: 67
Non vedo errori, così ho scritto una piccola unit di test:
Codice PHP:
<?php
function x($i) {
    
$random_number_1=array(); 
    while(
count($random_number_1)!=12) { 
    
srand((double)microtime()*1000000); 
    
$nuovo_valore_1=rand(1,100); 
    if (!
in_array($nuovo_valore_1$random_number_1)) { 
    
$random_number_1[]=$nuovo_valore_1
    } 
    } 

    
$numero1   $random_number_1[0];
    
$numero2   $random_number_1[1];
    
$numero3   $random_number_1[2];
    
$numero4   $random_number_1[3];
    
$numero5   $random_number_1[4];
    
$numero6   $random_number_1[5];
    
$numero7   $random_number_1[6];
    
$numero8   $random_number_1[7];
    
$numero9   $random_number_1[8];
    
$numero10  $random_number_1[9];
    
$numero11  $random_number_1[10];
    
$numero12  $random_number_1[11];

    echo 
"<strong><p>$i Generazione archivio terminata!</p></strong>
    $numero1, $numero2, $numero3, $numero4, $numero5, <br/>
    $numero6, $numero7, $numero8, $numero9, $numero10, <br/>
    $numero11, $numero12"
;
}

for(
$i=1$i<=1000$i++) {
    
x($i);
    echo 
"<hr>";
}
E l'ho provata, non ho verificato nessun caso di malfunzionamento.
Sicuro l'errore sia in questa funzione?
__________________

sydarex non in linea   Rispondi citando
Vecchio 02-01-09, 12:51   #3 (permalink)
User
 
Data di registrazione: Oct 2006
Messaggi: 287
Invia un messaggio tramite Skype a mikslap
Prova così

// CODICE CON 10 CARATTERI ALFANUMERICI CASUALI SE VUOI SOLO I NUMERI USA rand(48,57) e alla variabile $strx . SOLO 0 (zero)

$max = 10;
$strx = '';
for ($i=1; $i<=$max; $i++)
{
$set = array(rand(65,90),rand(97,122),rand(48,57));
$strx .= chr($set[rand(0,2)]);
}
$codice = $strx; // QUESTO E' IL CODICE

SE TUTTO VA SCRITTO IN UN DATABASE PUOI FARE CONTROLLI CHE ESCLUDEREBBERO LA GENERAZIONE DI NUMERI UGUALI
mikslap non in linea   Rispondi citando
Rispondi
Tags:



Strumenti di discussione

Regole di scrittura
Non puoi postare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi allegare file
Non puoi editare i tuoi post

BB code is Attivo
smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Disattivato
Trackbacks are Attivo
Pingbacks are Attivo
Refbacks are Disattivato
Vai al forum



Tutti gli orari sono GMT +3. Attualmente sono le 13:03.




Forum GT - © 2004-2009 GT idea S.r.l P.iva 02418200800 - Privacy/Disclaimer

SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.