• User Newbie

    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]


  • User

    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?


  • User Attivo

    // 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