Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Simulare lancio dadi

  1. #1

    Simulare lancio dadi

    Ciao raga, vorrei un aiuto su questo problema:
    -Simulare il lancio di un dado 1000 volte, visualizzare la frequenza di ogni faccia e la loro percentuale.
    Il fatto è che non so da dove partire perché non so come si usa la funzione random in java, me lo potreste spiegare per favore? Grazie mille in anticipo.

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    6
    codice:
    import java.util.Random;
    
    
    public class Dado {
    
    
        public static void main(String[] args) {
            Random r = new Random();
            int[] frequenze = new int[6];
            int i;
            for (i=0;i<1000;i++){
                frequenze[r.nextInt(6)] += 1;
            }
            for (i=0;i<6;i++){
                System.out.println("La faccia "+(i+1)+" è uscita "+frequenze[i]+" votle, "+frequenze[i]*0.1+"%");
            }
        }
    }

    Per la Random si possono usare
    Math.Random() che ritorna un double compreso tra 0.0 e 1.0

    oppure

    si istanzia un oggetto Random (vedi codice) che genera valori pseudo casuli
    oltre al metodo nextInt() ne esiste uno per svariati tipi che si voglia generare nextDouble() , nextFloat() ecc..

    Come puoi notare alla nextInt può essere passato un argomento che sta ad indicare il numero da non raggiungere quando il numero pseudo casuale viene generato. Nel nostro caso il parametro scelto è 6, vengono quindi generati 0 1 2 3 4 5 , che essendo effettivamente 6 numeri sono utili alla risoluzione del tuo problema.

    Ho anche scritto il resto del codice , se vuoi chiarimenti chiedi, spero di essere stato d'aiuto.

    PS: per programmi così semplici ti consiglio di usare linguaggi diversi come C o Pascal
    Ultima modifica di LeleFT; 13-01-2015 a 18:06 Motivo: Aggiunti i tag CODE

  3. #3
    Ciao grazie per la risposta. Però potresti spiegarmi come si usa math.random? E come dovrei svolgerlo l'esercizio, cioè visualizzare la frequenza di ogni faccia e le loro percentuali? Grazie in anticipo.

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Quote Originariamente inviata da LongSky Visualizza il messaggio
    PS: per programmi così semplici ti consiglio di usare linguaggi diversi come C o Pascal
    In base a cosa se posso sapere? D:
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Quote Originariamente inviata da Saverioapple Visualizza il messaggio
    Ciao grazie per la risposta. Però potresti spiegarmi come si usa math.random? E come dovrei svolgerlo l'esercizio, cioè visualizzare la frequenza di ogni faccia e le loro percentuali? Grazie in anticipo.
    LongSky ti ha scritto anche il codice....non credo ci sia nulla da aggiungere
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    6
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    In base a cosa se posso sapere? D:
    È innegabile che Java utilizza le risorse in modo meno efficiente di C ad esempio.
    Poi trovo che utilizzare linguaggi O.O come se fossero linguaggi procederurali complichi leggermente le cose e sia sconsigliabile quando si può scegliere.
    Magari è una mia opinione.

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Se uno sta imparando Java (il problema da risolvere mi pare la consegna di un compito) perché dovrebbe farne gli esercizi in altri linguaggi?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    6
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    Se uno sta imparando Java (il problema da risolvere mi pare la consegna di un compito) perché dovrebbe farne gli esercizi in altri linguaggi?
    Ti sei perso il "quando si può scegliere"

  9. #9
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Quote Originariamente inviata da LongSky Visualizza il messaggio
    È innegabile che Java utilizza le risorse in modo meno efficiente di C ad esempio.
    Poi trovo che utilizzare linguaggi O.O come se fossero linguaggi procederurali complichi leggermente le cose e sia sconsigliabile quando si può scegliere.
    Magari è una mia opinione.
    Capirai l'efficienza in questi casi quanto giochi. Inoltre in generale il primo punto da considerare è l'algoritmo utilizzato. Puoi sempre considerare soluzioni miste, lasciando il lavoro sporco ai linguaggi di più basso livello e coordinando il tutto da uno di più alto livello.
    Java ha in generale prestazioni abbastanza buone rispetto a C gcc e ottime rispetto a Pascal fpc per quanto riguarda i tempi d'esecuzione.
    http://benchmarksgame.alioth.debian.org/u64q/java.html
    http://benchmarksgame.alioth.debian....&lang2=fpascal
    Pascal risulta più lento sia rispetto a Java che a C gcc
    http://benchmarksgame.alioth.debian....scal&lang2=gcc
    I consumi di memoria sono effettivamente minori per C e Pascal.

    Perché usare C o Pascal è più semplice che usare Java?
    Per la programmazione procedurale puoi benissimo ignorare gli oggetti e usare solo le classi già scritte per semplificarti la vita. Basta scrivere qualche static e sei apposto.

    Piuttosto si può consigliare di scrivere cose simili in linguaggi quali Python, Ruby, TCL, REBOL et simila. Qui il vantaggio è evidente: la facilità di scrittura è abbastanza indiscutibile.

    In generale è molto più facile commettere errori in C, C++, Pascal e simili che in linguaggi a più alto livello quali ad esempio java, C#, D e simili o di ancora più alto livello. Anche solo per il fatto che più alzi il livello meno devi scrivere.

    Pensa ad esempio a quanto è facile in C accedere ad una locazione di memoria non valida e non accorgersi dell'errore per settimane, mesi o anni. Poi all'improvviso l'errore salta fuori in produzione all'interno di un software molto complesso con un sacco di funzioni che (incautamente) usano dettagli implementativi. A questo punto diventa molto molto difficile correggere il problema senza corrompere tutte le altre parti di codice che fanno affidamento sui dettagli implementativi.

    Questo era solo un esempio. Ci sono anche altri fattori da considerare ovviamente, ma certamente quando le risorse non sono un problema non ha senso scrivere nel linguaggio più efficiente possibile. Altrimenti scriveresti sempre in linguaggio Assembly che è (virtualmente) il più efficiente (anche se di certo al giorno d'oggi un compilatore è sicuramente più bravo di te a ottimizzare il codice).

    Edit: Eviterò di intervenire ulteriormente per evitare l'OT, era solo che non volevo che venissero dati consigli a mio avviso fuorvianti.
    Ultima modifica di Scara95; 16-01-2015 a 13:14
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

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.