Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    Script estrazione numeri

    Ciao a tutti,
    il mio intento è di scrivere uno script che crei un array di numeri casuali che siano tutti deiversi. (serve per scegliere degli studenti da una lista, ognuno dei quali è abbinato a un numero)
    Ho provato a scrivere una classe ma non funziona:
    Codice PHP:
    <?php

    class Number {

        function 
    __construct($min,$max,$num){     // $num indica quanti numeri estrarre 
            
    $i=1// Contatore per sapere quante etrazioni sono state fatte
            
    $Estrazione= array(rand($min,$max)); // prima estrazione
            
    while ($i<=$num) {
                
    $provvisorio=rand($min,$max);
                
    $a=count($Estrazione);
                for (
    $c=1$c<=$a$c++) {
                        if (
    $Estrazione[$c] == $provvisorio){
                            
    $alert=1;
                            break;
                        }
                        
                    }
                if (
    $alert == 0) {
                
    $Estrazione[]=$provvisorio;
                                      
    $i++;
                }
            }
        }
    }

    // Esempio
    $mn=1;
    $mx=30;
    $nm=2;

    $numeri= new Number($mn,$mx,$nm)

    ?>
    Quali errori ho commesso ?

  2. #2
    Perchè fare tanta fatica?

    Codice PHP:
    <pre>
    <?php 
    $min 
    1;
    $max 30;
    $num 10
    print_r(array_rand(range($min$max), $num));
    ?>
    </pre>

  3. #3
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    forse è più comodo usare
    http://us2.php.net/manual/en/function.in-array.php

    in ogni caso....

    for ($c=1; $c<=$a; $c++) non va...gli indici degli array partono da 0 fino ad arrivare a count($array)-1

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  4. #4
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    Originariamente inviato da filippo.toso
    Perchè fare tanta fatica?

    Codice PHP:
    <pre>
    <?php 
    $min 
    1;
    $max 30;
    $num 10
    print_r(array_rand(range($min$max), $num));
    ?>
    </pre>
    non ci sarei mai arrivato

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  5. #5
    Originariamente inviato da filippo.toso
    Perchè fare tanta fatica?

    Codice PHP:
    <pre>
    <?php 
    $min 
    1;
    $max 30;
    $num 10
    print_r(array_rand(range($min$max), $num));
    ?>
    </pre>
    Ottimo ! Non ero a conoscenza di questo comando.
    Alla fine sono riuscito a far funzionare lo script ma già con 4-5 valori ci impiega una vita a confrontare se sono uguali.

    Grazie.

  6. #6
    La funzione array_rand() secondo me non funziona bene.
    A volte crea un array che tra i risultati ha un 0 anche se l'array tra cui ha operato la scelta non lo contiene.
    Ad esempio:


    Codice PHP:
    //Array di partenza

    Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => 10 [10] => 11 [11] => 12 [12] => 13 [13] => 14 [14] => 15 [15] => 16 [16] => 17 [17] => 18 [18] => 19 [19] => 20 )

    //Array scelto dalla funzione array_rand() impostata per scegliere 10 elementi

    Array ( [0] => 18 [1] => 16 [2] => [3] => 19 [4] => [5] => 15 [6] => 12 [7] => [8] => 11 [9] => 
    Si nota subito che nella settima posizione si trova uno zero che non è contenuto nell'array di partenza.
    Questo fatto capita spesso anche per array più lunghi.

    --------------------- aggiornamento ---------------
    La funzione array_rand() non restituisce un array composto dagli elementi scelti a caso dell'argomento ma da un array composto dagli indici scelti a caso dell'array argomento della funzione.

  7. #7
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    Originariamente inviato da W Thunderbird
    La funzione array_rand() secondo me non funziona bene.
    A volte crea un array che tra i risultati ha un 0 anche se l'array tra cui ha operato la scelta non lo contiene.
    Ad esempio:


    Codice PHP:
    //Array di partenza

    Array ( [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => 10 [10] => 11 [11] => 12 [12] => 13 [13] => 14 [14] => 15 [15] => 16 [16] => 17 [17] => 18 [18] => 19 [19] => 20 )

    //Array scelto dalla funzione array_rand() impostata per scegliere 10 elementi

    Array ( [0] => 18 [1] => 16 [2] => [3] => 19 [4] => [5] => 15 [6] => 12 [7] => [8] => 11 [9] => 
    Si nota subito che nella settima posizione si trova uno zero che non è contenuto nell'array di partenza.
    Questo fatto capita spesso anche per array più lunghi.

    Che si un bug grave della funzione array_rand() ?
    Non ne ho idea delle motivazioni e non ho voglia di andare a leggermi il manuale
    in ogni caso
    Codice PHP:
    <pre>
    <?php
    $min 
    1;
    $max 30;
    $num 10;
    $array range($min$max);
    print_r($array);
    shuffle($array);
    array_splice($array$num);
    print_r($array);
    ?>
    </pre>

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  8. #8
    Codice PHP:
    <pre>
    <?php
    $min 
    1;
    $max 30;
    $num 10
    print_r(array_rand(array_flip(range($min$max)), $num)); 
    ?>
    </pre>

  9. #9
    Originariamente inviato da filippo.toso
    Posta il codice che hai usato.
    Il codice che ho usato è quello da te proposto.

    --------------------- aggiornamento ---------------
    La funzione array_rand() non restituisce un array composto dagli elementi scelti a caso dell'argomento ma da un array composto dagli indici scelti a caso dell'array argomento della funzione.
    ---------------------------------------------------------

    Quindi il codice da te proposto andava completato con la creazione di un array contenete gli elementi scelti e non i loro indici come invece restituito dalla funzione array_rand().

  10. #10

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.