日期:2014-05-20  浏览次数:21114 次

◆请教一个关于掷骰子的程序编写问题
掷一个6个面骰子6000次,求每个面出现的随机次数

老师说不算main方法什么的,关键算法只有3,4行
请教如何编写

------解决方案--------------------

import java.util.*;

public class Rand {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Random rd = new Random();
int i1=0,i2=0,i3=0,i4=0,i5=0,i6=0;

for(int i =0; i <6000; i++){
int r = rd.nextInt(6)+1;
switch(r){
case 1:
i1++; break;
case 2:
i2++; break;
case 3:
i3++; break;
case 4:
i4++; break;
case 5:
i5++; break;
case 6:
i6++; break;
}
}
System.out.println( i1+ " "+i2+ " "+
i3+ " "+i4+ " "+i5+ " "+i6);
}

}

------解决方案--------------------
int count[] = {0,0,0,0,0,0};
for (int i = 0; i < 6000; i++) {
int result = (int) (Math.random()*6);
count[result] ++;
}

// print the result
for (int i = 0; i < count.length; i++) {
System.out.println(i + " 出现 " + count[i] + " 次! ");
}
------解决方案--------------------
package com.test;

import java.util.Random;

public class AA {

public static void main(String[] args) {
// temp变量不可缺,否则,数据不准确
for(int i =0,temp =0, t = 0, b[] = {0,0,0,0,0,0}; i <6000; i++){
temp=((t=(int)Math.random()*6) <3)?(t <1?(b[0]++):(t <2?(b[1]++):(b[2]++))):(t <4?(b[3]++):(t <5?(b[4]++):(b[5]++)));
System.out.println( "1的次数 "+b[0]+ " 2的次数 "+b[1]+ " 3的次数 "+b[2]+ " 4的次数 "+b[3]+ " 5的次数 "+b[4]+ " 6的次数 "+b[5]);
}
}
}
------解决方案--------------------
import java.math.*;

int[] a=new int[6];
for(int i=0;i <6000;i++){
int temp=(int)(Math.random()*6);
if(temp==0){a[0]++;}
else if(temp==1){a[1]++;}
else if(temp==2){a[2]++;}
else if(temp==3){a[3]++;}
else if(temp==4){a[4]++;}
else{a[5]++;}
}
System.out.print(a[0]+ " "+a[1]+ " "+a[2]+ " "+a[3]+ " "+a[4]+ " "+a[5]);
结果我测试过,没有问题
算法好不好就不知道了