老师给的PPT里是这样提示的。
题目是
调用java.lang.Math的成员函数“public static double random()”运算下面表达式10000次,
(int) (Math.random()*20+0.5)
统计其中生成的整数0、1、2、……、20的个数分别是多少,并输出统计结果
我是这样写的
请问各位书上说的方法怎么实现,或者,有没有更好的思路?
去吧,交作业吧,如果老师认真看的话会说:这就叫结构化程序设计的思想。你先了解面向对象思想吧。
定义一个长度为20的数组,初始化为0,每次取下标未为(int) (Math.random()*20+0.5)-1的数组元素加一
强行写一个,自己优化一下代码呗
package mathDemo;
public class MyDemo {
static int[] arr = new int[20];
static int[] nums = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,0};
static int[] account = new int[21];
public static void setArr(int[] arr) {
for (int i = 0; i < 20; i++) {
arr[i] = (int) (Math.random()*20 + 0.5);
}
}
public static void getAccount(int[] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < nums.length; j++) {
if (arr[i] == nums[j]) {
account[j] += 1;
}
}
}
}
public static void runSetter() {
for (int i = 0; i < 10000; i++) {
setArr(arr);
getAccount(arr);
}
for (int j = 0; j < 21; j++) {
System.out.println("整数" + nums[j] + ": " + account[j]);
}
}
public static void main(String[] args) {
runSetter();
}
}
public class Test_3_Math {
private static int[] arr=new int [21];
public Test_3_Math() {
//初始化
for (int i = 0; i < arr.length; i++) {
arr[i] = 0;
}
}
public static void main(String[] args) {
for (int i = 0; i < 10000; i++) {
//生成10000个随机整数
int a = (int) (Math.random()*20+0.5);
for (int j = 0; j <=20; j++) {
if (a==j) {
arr[j]++;
}
}
}
int sum = 0;
for (int i = 0; i < 20; i++) {
sum+=arr[i];
}
System.out.println("总数"+sum);
for (int i = 0; i <= 20; i++) {
System.out.println(i+"有"+arr[i]+"个");
}
}
}
根据提示做题啊,不是让你实现。实现的方式一大堆 :
题目的提示其实就是面向对象,设计 一个类A
package cn.test;
public class A {
private int[] elements = new int[1000];
private int[] counts = new int[21];
public A(){
for(int i=0;i<elements.length;i++){
elements[i]=(int) (Math.random()*20+0.5);
}
}
public void calculate(){
for(int i=0;i<elements.length;i++){
counts[elements[i]] ++;
}
}
public void output(){
for(int i=0;i<counts.length;i++){
System.out.println(String.format("%d 共有%d个", i,counts[i]));
}
}
public static void main(String[] args) {
A a =new A();
a.calculate();
a.output();
}
}
0 共有21个
1 共有58个
2 共有44个
3 共有45个
4 共有47个
5 共有69个
6 共有56个
7 共有48个
8 共有37个
9 共有47个
10 共有51个
11 共有52个
12 共有46个
13 共有46个
14 共有51个
15 共有53个
16 共有52个
17 共有53个
18 共有57个
19 共有43个
20 共有24个