Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Math.random()

  1. #1

    Math.random()

    Perchè :

    codice:
    int casuale=(int) Math.random()*20;
    System.out.println("numero casuale:"+ casuale);
    Mi restituisce :

    codice:
    numero casuale:0
    Invece che un intero da 0 a 20 ?

  2. #2
    Perché il cast ha la precedenza sulla moltiplicazione. È come se avessi scritto:
    codice:
    int casuale=((int) Math.random())*20;
    che dà sempre zero, dato che Math.random() fornisce un double nel range [0, 1).
    Per sistemare, basta mettere delle parentesi
    codice:
    int casuale=(int)(Math.random()*20);
    in modo da fare prima la moltiplicazione, poi il cast. Nota comunque che questo ti darà un intero tra 0 e 19, se vuoi tra 0 e 20 devi moltiplicare per 21.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.