|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Oct 2007
Città: Catania
Messaggi: 152
|
[JAVA] Problema nell'uso di Math.random()
ragazzi ho un problemino (al solito!!
![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Aug 2008
Messaggi: 210
|
Codice:
char[] caratteri = {'T', 'C'}; Random random = new Random(); char caratterecasuale = caratteri[random.nextInt(2)]; String carattere = (caratterecasuale == 'T') ? "testa" : "croce"; System.out.printf ("E' uscito: %s", carattere); Ultima modifica di UnknownSoldier : 31-12-2008 alle 00:29. Motivo: piccolo errore, corretto ^^ |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Oct 2007
Città: Catania
Messaggi: 152
|
Suppongo tu sappia programmare in C++ perchè mi quello che hai scritto mi sembra C orientato agli oggetti quindi mi fa supporre C++...comunque quando scrivi "....random.nextInt(2)...." vuol dire che stai richiamando un metodo nextInt per l'oggetto random della classe Random passandogli il valore 2?perchè non sto capendo proprio questo codice!!io comunque ho provato a dare una soluzione del tipo: mi dichiaro due variabili final che chiamo testa e croce alle quali assegno rispettivamente 0 e 1 dopodichè su una variabile intera chiamata moneta faccio uscire un numero casuale tra 0 e 1 se esce 0allora ad una variabile stringa chiamata face assegno testa (e svolgo tutto il resto del programma) altrimenti a face assegno croce e svolgo l'altra parte di programma!!
comunque per chi fosse interessato e voglioso di fare esercizi questo è il testo: "Scrivere un metodo Genera che prenda come parametri formali un intero e restituisca in output una stringa ottenuta dalla concatenazione di vocali casuali, ognuna estratta mediante il seguente procedimento: si lancia una moneta (non truccata) e: se esce testa si sceglie uniformemente una vocale tra ‘a’ ed ‘o’, altrimenti se ne sceglie una tra ‘e’, ’i’ ed ’u’." Magari qualcuno lo svolge e poi lo vogliamo commentare insieme!! |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Aug 2008
Messaggi: 210
|
Ti sbagli, ovviamente ho scritto in Java
![]() Il metodo nextInt di Random, prende come argomento un intero, in questo caso gli ho passato il valore 2, ciò sta a significare che mi restituirà un numero casuale tra 0 e 1. Se avessi passato 3, mi avrebbe restituito un valore casuale tra 0 e 2 ecc... Il valore restituito dal metodo nextInt, lo uso come indice per riferirmi ad uno dei due elementi dell'array caratteri. Spero di averti chiarito le idee ![]() |
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Oct 2007
Città: Catania
Messaggi: 152
|
nonostante l'emoticon che hai messo ci tengo a precisare che la mia non voleva essere una critica a quello che avevi scritto!!ho pensato avessi scritto in C++ perchè un'istruzione come questa non l'ho incontrata in JAVA"System.out.printf ("E' uscito: %s", stringa);" solo per questo nient'altro!!tornando al codice scritto da te mi levi una curiosità?ma il metodo che hai usato nextInt() è un metodo che trovo nella java.lang oppure nella java.util java.math o comunque in qualche package java?perchè leggendo in alcuni forum di programmazione ho notato che molti usano questo metodo nextInt() tutti riferendosi sempre ad un'estrazione casuale di valori!!te lo chiedo perchè di solito io uso (int)(Math.random() *...)
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Apr 2006
Messaggi: 22462
|
Quote:
http://java.sun.com/j2se/1.4.2/docs/...il/Random.html
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Mar 2008
Messaggi: 401
|
Io ho sempre fatto così:
Codice:
System.out.println("E' uscito: " + caratterecasuale); |
![]() |
![]() |
![]() |
#8 |
Member
Iscritto dal: Oct 2007
Città: Catania
Messaggi: 152
|
|
![]() |
![]() |
![]() |
#9 |
Member
Iscritto dal: Nov 2007
Messaggi: 122
|
Oppure un modo più semplice è quello di generare un numero intero casuale fra 0 e 2, se il numero è minore di 1 è testa altrimenti croce
|
![]() |
![]() |
![]() |
#10 |
Member
Iscritto dal: Oct 2007
Città: Catania
Messaggi: 152
|
Si è più o meno quello che ho fatto io....però ho notato che più lo semplifico più si allunga il programma!comunque per la cronaca come ho detto ieri io ho dichiarato due variabili final chiamandole HEADS e TAIL alle quali ho assegnato rispettivamente i valori 0 e 1 dopodichè nel corpo del metodo ho messo un ciclo if dove: assegno ad una variabile intera chiamata moneta un numero casuale tra 0 e 1 se esce 0allora ad una variabile stringa chiamata face assegno testa (e svolgo tutto il resto del programma) altrimenti a face assegno croce e svolgo l'altra parte di programma!!se volete vi posto il codice e ne discutiamo insieme visto che comunque fra 9giorni ho una prova basata solo sulla generazione di metodi e magari così potrei avere qualche chiarimento in più!!!!
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
forse ancora meglio potevi usare un enum, no??
|
![]() |
![]() |
![]() |
#12 |
Member
Iscritto dal: Oct 2007
Città: Catania
Messaggi: 152
|
in che senso potevo usare un enum?che cosa intendi per enum???
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:37.