Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    168

    Creazione serie numerica

    Grazie a tutti in anticipo.

    Devo creare una serie numerica composta da 10 numeri presi casualmente tra 1 a 100 senza duplicati.

    Il mio dubbio è : se faccio un ciclo su una funzione Random e poi faccio controllare se il numero è già uscita potrebbe essere troppo lento.

    Mi date un consiglio o meglio se potete mi postate qualche esempio di codice, naturalmente PHP.

    Grazie mille a tutti

    Max

  2. #2
    e' una classe vecchia ma ancora efficace

    e' quella per simulare un' estrazione del lotto, il random e' da 1 a 90 , vedi se riesci a ricrearla per farla da 1 a 100 ( $this->secure_rand(1,100); )


    http://www.devpro.it/php4/code/20/
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Puoi fare cosi....

    Prende un numero tra 1 e 100 parametrizzato nelle variabili
    $primo_numero e $ultimo_numero.

    Il numero dei numeri da estrarre è parametrizzato al livello della funzione. Ritorna un array.

    codice:
    <? 
    
    $primo_numero  = 1;
    $ultimo_numero = 100;
    
    function creaLista($numero) { 
     global $primo_numero, $ultimo_numero;
     $arr = array();
     $i   = 0; 
     while (count($arr) <= $numero) {
      $alea = rand($primo_numero,$ultimo_numero); 
      if (! in_array($alea,$arr)) {
    	 $arr[$i++] = $alea;
    	} // if (! in_array($alea,$arr))
     } // while (count($arr) <= $numero) 
     return $arr; 
    } // function creaLista() 
    
    $arr = creaLista(10);
    
    ?>

  4. #4
    cosa intendi per "lento"

    se banalmente faccio

    srand((double)microtime()*1000000);
    $serie = array();
    $i=0
    while($i<10){
    $num = rand(1, 100);
    if(!$serie[$num])){
    $serie[$num] = 1;
    $i++;
    }
    }

    non ho misurato ma non credo sia lentissimo,
    ricordo altri metodi con inizializzazioni di strutture pre-mischiate (come un mazzo di carte) ma dipende se per lentezza intendi dire solo il pezzo di codice per il rand o tutto lo script
    10 su 100 non dovrebbe essere

  5. #5
    oppure cosi'
    codice:
    $da1_a_100 = Array();
    for( $a = 1; $a <= 100; $a++ ) {
    	array_push( $da1_a_100, $a );
    }
    $da1_a_X = array_rand( $da1_a_100, 10 );
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Originariamente inviato da andr3a
    oppure cosi'
    codice:
    $da1_a_100 = Array();
    for( $a = 1; $a <= 100; $a++ ) {
    	array_push( $da1_a_100, $a );
    }
    $da1_a_X = array_rand( $da1_a_100, 10 );
    Bello !!!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    168

    grazie mille

    Non avrei potuto ottenere di meglio.
    Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.