Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    generare casualmente 10 numeri interi

    Ciao ragazzi, avrei bisogno di una mano con questo piccolissimo esercizio:
    Scrivere il programma TiraDado che genera casualmente dieci numeri interi compresi tra 1 e 6 (inclusi) e li stampa su righe separate.

    Il prof a lezione non ha ancora spiegato cicli e array, per cui come si potrebbe fare?

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Per generare numeri casuali hai due modi:

    Math.random(): ti da un double pseudo-causale tra 0 e 1. Poi lo moltiplichi per qualcosa, fai modulo 6, sommi 1 e hai il tuo numero tra 1 e 6.

    Es:

    int r = 1 + ((int) (Math.random() * 1000)) % 6;

    Usi il metodo nextInt(n) della classe Random.


    Se non puoi usare cicli e array beh.. fai dieci chiamate sequenziali, no?
    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
    Io avevo fatto così:

    import java.util.Random;
    public class TiraDado {


    public static void main(String[] args) {

    int x = (int)Math.random() *5+1;

    System.out.println(x);
    System.out.println(x);
    System.out.println(x);
    System.out.println(x);
    System.out.println(x);
    System.out.println(x);
    System.out.println(x);
    System.out.println(x);
    System.out.println(x);
    System.out.println(x);


    }
    }

    ma mi restituisce SEMPRE lo stesso risultato:
    1
    1
    1
    1
    1
    1
    1
    1
    1
    1

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    E infatti con quel codice stai generando 1 numero, lo metti nella variabile "x" e poi stampi tale variabile 10 volte... cos'altro dovrebbe fare lui se non stampare quell'unico valore 10 volte?

    Devi eseguire 10 volte anche la generazione del numero casuale...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da djmary
    int x = (int)Math.random() *5+1;
    Come dice chiaramente la documentazione, Math.random() restituisce un double tra 0 e 1. Tu lo casti a int, troncandolo quindi a 0.

    Nella formula ti manca il modulo. Guarda quella che ti ho scritto prima

    Senza considerare quello che ti ha già detto LeleFT
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    giusto!!!
    che palle però dover riscrivere tutto 10 volte!
    Potrei usare un cicloe sorprendere il prof XD

  7. #7
    però se provo a riscriverlo mi dà:
    x is already defined in main(java.lang.String[])

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da djmary
    però se provo a riscriverlo mi dà:
    x is already defined in main(java.lang.String[])
    La dichiarazione va fatta solo una volta... poi devi semplicemente usarla.

    codice:
    // la parte in grassetto è la dichiarazione
    int x = (int)(Math.random() *5)+1;
    ...
    
    // poi la devi solo usare, non ri-dichiarare
    x = (int)(Math.random() *5)+1;
    ...
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    guarda l'esempio sulla generazione di numeri casuali che trovi qui.

    comunque, come ti è stato suggerito, puoi o usare il metodo random() della classe Math o usare il metodo nextInt della classe Random.

    1)
    codice:
    int rnd=((Math.random()*10)%6)+1;
    2)
    codice:
    int numRnd;
    Random rnd=new Random();
    numRnd=rnd.nextInt(6)+1;
    ovviamente poi basta solo implementarli (o uno o l'altro) in un ciclo for o, se non puoi, farli per 10 volte...
    I miei esempi in Java qui: http://cdpjavaexamples.altervista.org/index.html

  10. #10
    Grazie mille a tutti!

    cmq funziona uguale anche se metto
    int a = ((int) (Math.random() * 6)) +1;

    invece di
    1 + ((int) (Math.random() * 1000)) % 6;

    qual è la differenza?

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.