Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di klauzz
    Registrato dal
    Jul 2001
    Messaggi
    303

    math.random per array. problema:

    raga, ho un bel problema:

    Ho un Array, e ho bisogno di generare un numero casuale, e che il massimo numero generato sia l'ultimo elemento dell'Array.

    codice:
    var myArray = new Array("pippo")
    randomNumber = Math.round(Math.random()*(myArray.length));
    la proprietà "length" dovrebbe fare questo... Ma facendo un trace sulla variabile randomNumber, noto che mi genera oltre che allo 0, anche un 1.

    Come mai? Considerando che ho solo un elemento nell'array, come si spiega ciò?

    usando invece:

    codice:
    var randomNumber = random(images.length);
    questo inconveniente non accade, e mi genera solo lo 0.

    A questo punto chiedo: che differenza c'è fra i due codici?
    Avevo studiato che la proprietà "round" dell'oggetto Math, mi arrotonda un numero, e la proprità "random" mi genera un numero da 0 a 1.
    - se mi genera 0, e il valore di length è 0, mi risulta 0
    - se mi genera 1, e il valore di length è 0, mi risulta 0, no?


    Scrivere solo "random" come nel secondo codice postato, che valore ha?

    Grazie a tutti

    Ciauz

  2. #2
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Dato per scontato che

    codice:
    random(x)
    restituisce un numero intero pseudo casuale compreso tra 0 e x (x escluso), e che

    codice:
    Math.random()
    restituisce un numero decimale casuale maggiore uguale a 0 ed inferiore a 1, quello che vuoi fare tu è:

    codice:
    randomNumber = Math.floor(Math.random()*(myArray.length));
    Devi arrotondare verso il basso, perchè se usi il "round", quando il valore dei decimali è maggiore di 0,5, il numero viene arrotondato per eccesso..

  3. #3
    Utente di HTML.it L'avatar di klauzz
    Registrato dal
    Jul 2001
    Messaggi
    303
    grazie Nega

    adesso ho finalmente capito

    Ciauzz

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.