Estou com um problema em um programinha. Criar um dado que rode 6000 vezes aleatoriamente.
O meu rodou porem não é aleatorio, cae sempre na mesma face.
Alguem poderia me dizer qual o erro no programa?
import java.util.Random;
public class dado {
public static void main (String []args) {
Random dado = new Random();
int d=0;
int lado1=0;
int lado2=0;
int lado3=0;
int lado4=0;
int lado5=0;
int lado6=0;
for (int x=0; x<6000; x++){
dado.nextInt(6);
switch(d){
case 0:
lado1++;
break;
case 1:
lado2++;
break;
case 2:
lado3++;
break;
case 3:
lado4++;
break;
case 4:
lado5++;
break;
case 5:
lado6++;
break;
}
}
System.out.println("face/frequencia");
System.out.println("lado1 " + lado1);
System.out.println("lado2 " + lado2);
System.out.println("lado3 " + lado3);
System.out.println("lado4 " + lado4);
System.out.println("lado5 " + lado5);
System.out.println("lado6 " + lado6);
}
Mas o valor inicial é sempre =0 correto?
Mas se eu deixo sem valor não roda. Então como faço para que eu não tenha de designar um valor e sim o programa me de um?
public static void main(String[] args) {
Random dado = new Random();
for(int i = 0; i < 6; i++) {
System.out.println(dado.nextInt(6));
}
}
}[/code]
e o resultado foi esse:
4
3
2
0
5
4
quer dizer que ele está sim escolhendo aleatoriamente um valor, o que acontece é que sua variável d não está recebendo o valor gerado pelo dado.nextInt(6).
public class tela{
static Random r = new Random();
static int dado[]=new int[6];
static int lado=1;
public static void main(String args[]){
for (int i = 0; i < 6; i++) {
dado[i]=i;
}
for (int i = 0; i < 100; i++) {
System.out.println(dado[r.nextInt(6)]);
}
}
}
Assim funciona pra 100
é só aumentar o loop
nao sei se é isso que vc queria fazer
mas em cada passada do laço ele escolhe um lado do dado e imprime!
static int dado[]=new int[6];
static int lado=1;
public static void main(String args[]){
carregaDado();
for (int i = 0; i < 100; i++) {
System.out.println(dado[sortNum()]);
}
}
static int sortNum(){
int n = (int) (6*Math.random()) ;
if(n==0){
return 1;
}
return n ;
}
static void carregaDado(){
for (int i = 0; i < 6; i++) {
dado[i]=i;
}
}
}
[/code]
Assim funciona pra 100
é só aumentar o loop
nao sei se é isso que vc queria fazer
mas em cada passada do laço ele escolhe um lado do dado e imprime!
[/quote]
Não entendi essa… voce sorteia um numero que vai de 1 a 6 depois pega o valor correspondente em um array… o pior é que o numero 6 lança um ArrayIndexOutofBoundException e a posição 0 nunca vai ser lida.