个人写作项目:随机产生600个1~6的整数,统计每个数出现的次数。
测试类:
public static void main(String[] args) {
Random1_6 random1_6 = new Random1_6();
random1_6.ran600();
System.out.println("统计完毕");
int[] num = random1_6.getNumInt();
for (int i = 1; i <= num.length; i++) {
System.out.println(i + "在随机数中出现的次数为:" + num[i - 1]);
}
}
参与类:
/**
* @program: Day01
* @ClassName Random1_6
* @description(类信息): 循环生成600个1-6的随机数
* @author: honor
* @create: 2024-04-28 19:23
* @Version 1.0
**/
public class Random1_6 {
private int[] numInt = new int[6];
public int[] getNumInt() {
return numInt;
}
/**
* @return int
* @ClassName Random1_6
* @anthor 上善若水
* @description (方法信息): 生成一个1-6的随机数
* @Date 2024/4/28 19:26
* @Param []
*/
public int ran1_6() {
return (int) (Math.random() * 6 + 1);
}
/**
* @return int
* @ClassName Random1_6
* @anthor 上善若水
* @description (方法信息): 循环一次生成的随机整数数组,统计一个数组内出现的数字次数
* @Date 2024/4/28 19:31
* @Param []
*/
public int[] ranFor(int[] num) {
for (int i = 0; i < num.length; i++) {
num[i] = ran1_6();
switch (num[i]) {
case 1 -> numInt[0] += 1;
case 2 -> numInt[1] += 1;
case 3 -> numInt[2] += 1;
case 4 -> numInt[3] += 1;
case 5 -> numInt[4] += 1;
case 6 -> numInt[5] += 1;
}
}
return num;
}
/**
* @return void
* @ClassName Random1_6
* @anthor 上善若水
* @description (方法信息):循环六百次并且完成统计
* @Date 2024/4/28 20:01
* @Param []
*/
public void ran600() {
for (int i = 0; i < 600; i++) {
int[] num = new int[ran1_6()];
num = ranFor(num);
}
}
}
思路:
用Math.Random生成1-6的随机数,再循环生成1-6位的随机整形数组,使用一层循环计算该数组数字出现次数,使用一个600次的循环计算整个数值并且输出
问题:
思路大体无错,在全随机值随机数的计算较为简单,多次分割后控制在O(n^2)内,但是在计算出现次数上较为简单代码块较长,也比较单调。
还需要注意格式问题,Java语言格式与C++不太相同
在相关方法分类不要太过分细分避免重复调用导致性能浪费
总结:
完成预期目标,方法分类过细,重复调用次数多,利用率高,方法使用进步明显。
但是在技术方面上有较大进步空间,没有达到自身满意的地步。方法通用性一般,潜在扩张性较好。
细节方面需要弥补补充