Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    23

    Random Senza Ripetizioni

    vorrei dare alla variabile var un numero a random compreso tra 1 e 10 solo che devo mettere il tutto in un ciclo for e ogni volta che cicla la varibile var deve essere presa a random ma non deve essere uguale a uno dei numeri già estratti.

    In sostanza una specie di tombola, dove a random pesco i numeri solo che i numeri già estretti non possono essere pescati due volte.

    immagino che ci sia una soluzione con gli array, ma per me sono davvero terreno inesplorato potete aiutarmi???


    grazie


  2. #2
    ci sono due metodi concettualmente diverse, che upoi adottare secondo le esigenze:

    primo:

    - metti tutti i valori che il numero può avere in un array...
    es: matrice = new Array(1,2,3,4,5,6,7,8,9,10);
    - dopodichè ad ogni ciclo peschi un numero random compreso fra 0 e la lunghezza della lista e quel numero lo usi come indice per decidere quale scompartimento della matrice pescare e successivamente eliminare (in modo che non si ripeta +)

    esempio pratico:

    codice:
    matrice = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
    matrice2 = new Array();
    trace("numeri possibili: " + matrice);
    init_lung = matrice.length;
    for (i = 0; i < init_lung; i++) {
    	indice = random(matrice.length);
    	numero = matrice[indice];
    	matrice2.push(numero);
    	matrice.splice(indice, 1);
    }
    trace("sequenza casuale: " + matrice2);
    "La consapevolezza di Case suddivisa come perle di mercurio. La sua visione era sferica, come se una singola retina rivestisse la superficie interna di un globo che conteneva tutte le cose, se tutte le cose si potevano contare." —Neuromante, William Gibson (1984)

  3. #3
    il secondo è questo:

    se tu puoi avere valori sempre da 1 a 10 fai così:

    estrai casualmente un numero, e se non è già presente nella nostra matrice di destinazione, ce lo metti

    devi fare una funzione recorsiva... se non ti dovesse bastare il primo metodo ti scrriverò anche il secondo

    "La consapevolezza di Case suddivisa come perle di mercurio. La sua visione era sferica, come se una singola retina rivestisse la superficie interna di un globo che conteneva tutte le cose, se tutte le cose si potevano contare." —Neuromante, William Gibson (1984)

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    23

    non funziona

    ciao panta

    ho inserito lo script che hai postato, però non mi restituisce nessun valore matrice2. Questo è l'esatto codice che ho sul mio codice

    function start(){for (c=1,p=0;c!=10;c++,p++) {
    this['carta'+c]._x=this['posizione'+p]._x;
    this['carta'+c]._y=this['posizione'+p]._y;

    }
    }
    dovrebbe funzionare in questo modo: ho dieci carte istanze che chiamo carta1,2,3,... ho dieci posizioni istanze che chiamo posizione1,2,3...

    quando avvio il codice dovrei distribuire le 10 carte nelle dici posizioni a random. chiaramente ogni carta una posizione fino a coprire tutte le posizioni.
    Come posso utilizzare il tuo script?


  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    23

    No scusa

    scusa panta era un errore mio FUNZIONA e anche bene. ho forse anche trovato il modo di inserirlo da solo. se riesco a farlo partire posto il codice che magari serve a qualcuno imbranato o poco esperto come me


    grazie
    :quote: :quote: :quote:

  6. #6
    bene bene!
    "La consapevolezza di Case suddivisa come perle di mercurio. La sua visione era sferica, come se una singola retina rivestisse la superficie interna di un globo che conteneva tutte le cose, se tutte le cose si potevano contare." —Neuromante, William Gibson (1984)

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.