Visualizzazione risultati 1 fino 8 di 8

Discussione: Generari 8 numeri casuali tutti diversi

  1. #1
    Guest

    Predefinito Generari 8 numeri casuali tutti diversi

    Salve a tutti!

    Ho un piccolo problema, ho neccessita di generare 8 numeri casuali, possibilmente in php ma va bene anche in JS.
    Il Problema che mi sta bloccando e che questi numeri DEVONO essere compressi tra 1 e 100 (estremi inclusi) e devono neccessariamente essere tutti diversi, mai ripetuti all'interno della stessa generazione.

    Grazie a tutti del supporto!

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Metodo A: estrai numeri e verifichi di non averli gia' estratti
    Codice:
    estratti = array()
    while (count(estratti) < 8) {
      nuovo = 1 + random * 100
      if (! in_array(nuovo, estratti) )  estratti[] = nuovo
    }
    metodo B: togli i numeri da una "scatola" che li contiene tutti, cosi' non puoi estrarli due volte
    Codice:
    numeri = array(1,2,3, .... ,100)
    estratti = array()
    while ( conta fino a 8 ){
      nuovo = array_rand( numeri )
      estratti = numeri[nuovo]
      unset( numeri[nuovo] )
    }

  3. #3
    Guest

    Predefinito

    Il metodo B è perfetto per le mie esiggenze, però.... non ho capito che codice hai usato, JS o PHP?
    Ignoranza abissale....
    Se la risposta è, vanno bene entrambi, sono feliccissimo di scoprire che in php si possa unsettare il valore di un array.

    EDIT: Precedentemente con PHP ho avuto problemi con gli array_rand, perchè non generano ne il numero massimo (100) e capita che a volte diano valore nullo, come risolvo?
    Ultima modifica di morgensterngdr : 02-08-2009 alle ore 22.02.14

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Ne' js ne' php, ho scritto pseudo-codice, solo per darti l'idea di come funzioni. Le funzioni in_array() e unset() però esistono in php, in javascript ci sarà qualcosa di equivalente.

    array_rand() non può ritornarti un valore nullo, o forse intendi rand()?

  5. #5
    Guest

    Predefinito

    no no, intento proprio array rand, lo usavo per generare due numeri casuali i cui valori erano contenuti in un array, ed ogni tanto mi dava come valore 0, valore che non avevo previsto.
    Comunque grazie delle risposte, mi metto presto al lavoro.

  6. #6
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    ricorda che gli array numerici sono indicizzati a partire da zero:
    Codice PHP:
    $a = array ( 'a', 'b', 'c', 'd' );
    print_r($a);
    restituisce
    Codice:
    Array
    (
        [0] => a
        [1] => b
        [2] => c
        [3] => d
    )
    quindi array_rand su questo array ti restituirebbe un valore fra 0 e 3

  7. #7
    Guest

    Predefinito

    Codice PHP:
    $var= array("1","2","3","4","5");
    $num = array_rand($var, 1);
    Mi dava valore 0 qualche volta.

  8. #8
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    E' giusto, non vedo il problema. array_rand() ti ritorna l'indice di un elemento a caso, quando ti restituisce 0 ti sta indicando il primo elemento, e se stampi $var[0] ottieni 1.

    Forse hai un'idea sbagliata di quello che la funzione dovrebbe fare: ti restituisce l'indice o la chiavedi un elemento a caso, non l'elemento stesso.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •