- Home
- Categorie
- Coding e Sistemistica
- PHP
- Generatore numeri casuale random.
-
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
[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";[/php]
-
Non vedo errori, così ho scritto una piccola unit di test:[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>";
}[/PHP]E l'ho provata, non ho verificato nessun caso di malfunzionamento.
Sicuro l'errore sia in questa funzione?
-
// 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 CODICESE TUTTO VA SCRITTO IN UN DATABASE PUOI FARE CONTROLLI CHE ESCLUDEREBBERO LA GENERAZIONE DI NUMERI UGUALI