Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Piccolo problema per quanto riguarda la funzione Math.random()

    Salve a tutti,

    è il mio primo post su questo forum quindi mi presento brevemente: mi chiamo Michele e scrivo da Anzio (provincia di Roma) e frequento il primo anno di ingegneria informatica alla Sapienza di Roma.

    Presento il mio quesito:
    come da titolo ho un problema con la funzione Math.random(), in particolare non capisco come posso fare a generare, ogni volta che accedo a un metodo da me scritto che contiene la funzione random, un numero (int) compreso tra 0 e 1. Dopo aver compilato il programma (che più volte nel suo codice invoca quel metodo) scopro sempre che attribuisce 0 alla variabile..

    Come posso fare per risolvere?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Piccolo problema per quanto riguarda la funzione Math.random()

    Originariamente inviato da Mikepicker
    in particolare non capisco come posso fare a generare, ogni volta che accedo a un metodo da me scritto che contiene la funzione random, un numero (int) compreso tra 0 e 1.
    Tra zero e uno non c'è alcun numero intero
    Math.random() restituisce un double (virgola mobile!) compreso tra zero e uno. Se tu fai il cast a int nel 99.9% dei casi ottieni 0 perché il cast opera per troncamento!

    Originariamente inviato da Mikepicker
    Come posso fare per risolvere?
    La tua richiesta non è chiara... Vuoi generare o zero o uno? Altro? Spiega meglio!
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Si, scusami.. volevo che il programma generasse o 1 oppure 0

  4. #4
    Io farei cosi' se vuoi proprio usare Math.random():

    codice:
    int binaryRandom = 0;
    if (Math.random() > 0.5) {
        binaryRandom = 1;
    }
    In questo modo ottieni 0 o 1 con il 50% delle probabilita' ciascuno.
    In alternativa potresti usare uno dei metodi di java.util.Random
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Mikepicker
    Si, scusami.. volevo che il programma generasse o 1 oppure 0
    Semplice:

    int n = (int) (Math.random()*2);

    Così il valore è tra 0 (incluso) e 2 (escluso). Quindi un cast a int porta o a 0 o a 1.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6

  7. #7
    Originariamente inviato da andbin
    Semplice:

    int n = (int) (Math.random()*2);

    Così il valore è tra 0 (incluso) e 2 (escluso). Quindi un cast a int porta o a 0 o a 1.
    Si' in effetti e' il metodo piu' veloce. Secondo me pero' il codice diventa meno leggibile.
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

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.