Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Random in Range

  1. #1

    Random in Range

    ciao a tutti

    ho provato a creare una piccola funzione javascript che genera un numero casuale in un intervallo. Facile no?... beh a quanto pare no xD

    questo è quello che ho scritto:
    codice:
    function gen(low, hi, trg){
    	var rnd = Math.random();
    	rnd = rnd.toFixed(2);
    //	var result = Math.ceil((hi-low+1)*rnd+low);
    	var offset = (hi - low + 1);
    	var long_number = offset * rnd + low;
    	var result = Math.ceil(long_number);
    	$("#"+trg).html("("+hi+" - "+low+") * "+rnd+" + "+low+" = "+result);
    }
    La riga commentata è l'operazione "vera", tutti gli altri passaggi mi servono per stampare poi i singoli risultati a schermo per verifica.

    ora provate il codice all'indirizzo... Noterete che i risultati stampati a schermo A) non sono nel range passato B) il risultato non corrisponde al calcolo fatto...

    la mia domanda è: perché? per quale arcana ragione succede ciò? cosa mi sta sfuggendo?

    grazie in anticipo a chi risponde :P

  2. #2

  3. #3
    interessante grazie
    comunque io voglio capire perchè non funziona il mio codice! cioè se lo fai con la calcolatrice funziona!!!!
    c'è? javascript nn ha passato l'esame di mate?

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Quasi tutti dimenticano che i valori introdotti nei campi di un form sono sempre e solo stringhe...

    var result = Math.ceil((parseInt(hi)-parseInt(low)+1)*rnd+parseInt(low));

    piuttosto io toglierei rnd = rnd.toFixed(2); che fa solo danni...

    ciao

    Edit: statisticamente non mi piacciono i risultati ottenuti... prova questo:

    var result = Math.round( (parseInt(hi)-parseInt(low)) * Math.random() ) + parseInt(low);
    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

  5. #5
    hehe hai ragione anche tu!
    il .toFixed(2) l'ho usato solo perchè pensavo ceh il problema di calcolo fosse dovuto ad un eccessivo numero di cifre dopo la virgola, all'inizio mica l'avevo messo xD

    comunque la differenza tra la mia formula e la tua è il Math.round() al posto del Math.ceil() e basta (eccetto i paresInt() provvidenziali :P) giusto?

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 © 2026 vBulletin Solutions, Inc. All rights reserved.