注意
本文最后更新于 2023-12-08,文中内容可能已过时。
大一刚学 c 的时候以前写过 c 语言版 的。
- Math: 针对数学进行运算的类
- 特点:没有构造方法,因为它的成员都是静态的
- 产生随机数:
public static double random(): 产生随机数,范围 [0.0,1.0)
- 产生 1-100 之间的随机数
int number = (int)(Math.random()*100)+1;
- 猜数字小游戏案例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| class MathDemo {
public static void main(String[] args) {
//获取随机数
//double d = Math.random();
//System.out.println(d);
/*
for(int x=0; x<10; x++) {
//System.out.println(Math.random());
System.out.println(Math.random()*100);
}
*/
//我们如何获取 1-100 之间的随机数呢?
for(int x=0; x<100; x++) {
int number = (int)(Math.random()*100)+1;
System.out.println(number);
}
}
}
|
0.1 小游戏
该游戏可以由程序随机产生或由用户输入四个 0 到 9 之间的数字,且不重复。玩游戏者通过游戏提示输入八次来匹配上面所输入的数字。A 表示位置正确且数字正确,B 表示数字正确而位置不正确。
算法: 可以直接算出 A 类的数目,但是 B 类的数目直接算出或许会很麻烦,正好我们可以先算出 C 类数目恰好减去 A 类就是 B 类了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
| package caishuzi;
import java.util.Scanner;
class Num {
private int[] a= {0,0,0,0};
public Num() {}
public void setx() {
/*for(int i=0;i<4;i++) {
a[i]=(int)(Math.random()*10);
}*/
//为了四个互不相同的随机数
a[0]=(int)Math.random()*10+1;
for(int i=1;i<4;i++) {
int t=(int)(Math.random()*10);
for(int j=0;j<i;j++) {
if(t==a[j]) {
t=(int)(Math.random()*10);
j=0;
}
}
a[i]=t;
}
}
public int[] getx() {
return a;
}
public void show() {
System.out.println();
for(int i=0;i<4;i++)
System.out.print(a[i]+" ");
System.out.println();
}
}
public class caishuzi {
public static void main(String agrs[]) {
int a[] = {0,0,0,0},b[] = {0,0,0,0};
System.out.println("* * * *\n 请输入 4 个数字!A 表示位置数字都正确,B 表示数字正确位置错误。");
Scanner sc=new Scanner(System.in);
Num n=new Num();
n.setx();
a=n.getx();
/*for(int i=0;i<4;i++)
System.out.print(a[i]+" ");
n.show();*/
for(int k=0;k<10;k++) {//猜测次数
int A=0,B=0,C=0;
for(int i=0;i<4;i++) {
b[i]=sc.nextInt();
}
sc.close();
for(int i=0;i<4;i++){
if (b[i]==a[i])A++;
for(int j=0;j<4;j++){
C=b[i]==a[j]?++C:C;//C 表示猜测数内和随机数中 A 类和 B 类数的数目
if (b[i]==a[j])break;
}
}
B=C-A;// 关键算法(感叹数学魅力)
if(A==4) {
System.out.println("恭喜猜对啦!");
}else {
System.out.println(A+"A"+B+"B");
}
}
}
}
|
0.2 一次游戏过程
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| * * * *
请输入 4 个数字!A 表示位置数字都正确,B 表示数字正确位置错误。
0 1 2 3
0A1B
0 1 2 4
0A1B
0 1 2 5
1A1B
6 1 2 5
1A2B
1 6 2 5
3A0B
1 6 7 5
恭喜猜对啦!
|