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

    [javascript] problema con variabile casuale

    salve ho questo script:

    codice:
         var a=Math.round(100*Math.random())+300;
    questo mi genera un numero casuale... nel mio programma mi sta creando dei problemi in quanto spesse volte un numero generato si ripete più volte..
    come posso evitare questo inconveniente? oppure come posso creare una funzione che mi crea dei numeri in sequenza?

    io richiamo la funzione con un href=\"javascript:void(0);\" associato ad un link.

    sarebbe possibile magari incrementare "a" al click del link??

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    in genere si consiglia Math.floor al posto di Math.round per produrre numeri "maggiormente casuali"
    pero' se hai assoluta necessita' di generare numeri sempre diversi la questione cambia

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    168
    si ho bisogno di numeri sempre diversi.. o numeri incrementali...

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    il modo piu' semplice e' avere "a" come variabile globale e incrementarla nella funzione
    codice:
    a=Math.floor(101*Math.random())+300;
    
    function funzione(){
      a++;
      // fai quello che devi fare con a
    }

  5. #5
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Con un range di soli 100 numeri e' normale generare duplicati... devi verificare che non sia gia' stato estratto.

    Un esempio didattico:
    codice:
    var s=""; for(var i=0;i<100;i++) {s+="0"}; // stringa di 100 zeri
    for(var k=0;k<100;k++) {
    	var a=Math.round(100*Math.random()); // ricavo indice
    	while (s.charAt(a)!="0") { // test se gia' estratto
    		a=Math.round(100*Math.random()); // ri-ricavo indice
    	}
    	s = s.substr(0,a)+"1"+s.substr(a+1); // aggiorno stringa
    	a+=300; // ottengo numero definitivo
    	document.write(a+" - "+s+"
    ")
    }
    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    168
    e se volessi creare una stringa hash come ad esempio quella della password generate casualmente?

  7. #7
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da miscialo
    e se volessi creare una stringa hash come ad esempio quella della password generate casualmente?
    Insomma, deciditi ... una stringa hash e' una cosa diversa da una password casuale...

    Comunque vedi: http://javascript.html.it/script/ved...e-di-password/
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    168
    il problema è ke sto usando ajax... non posso dichiarare altre funzioni fuori dal blocco xkè mi si impalla tutto...

    se fosse possibile generare una stringa casuale usando una sintassi simile a questa:

    var a=Math.round(100*Math.random())+300;

  9. #9
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da miscialo
    il problema è ke sto usando ajax... non posso dichiarare altre funzioni fuori dal blocco xkè mi si impalla tutto...

    se fosse possibile generare una stringa casuale usando una sintassi simile a questa:

    var a=Math.round(100*Math.random())+300;
    Se il problema reale non e' generare una stringa random ma, come pare, inviare con ajax un parametro sempre diverso per evitare i problemi della cache , usa come fanno tutti, i millisecondi dalla mezzanotte...

    (new Date()).getTime()

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    168
    grazie mille era quello che mi ci voleva

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.