概念
查看类
java.util.Random
:该类需要import导入使后使用。
查看构造方法
public Random()
:创建一个新的随机数生成器。
查看成员方法
public int nextInt(int n)
:返回一个伪随机数,范围在e(包括)和指定值n(不包括)之间的in值。
使用Random类,完成生成5个10以内的随机整数的操作,代码如下:
package cn.luis.demo3;
import java.util.Random;
/*
Random类用来生成随机数字,使用起来也是三个步骤:
1.导包(自动生成)
import java.util.Random;
2.创建
Random r = new Random(); //括号留空即可
3.使用
获取一个随机int数字(若括号留空,则范围是int所有范围,有正负两种),int num = r.nextInt();
获取一个随机int数字(参数代表了范围,左闭右开区间)int num = r.nextInt(3);
就是可以取到0、1、2;[0,3)
*/
public class Demo01Random {
public static void main(String[] args) {
Random r = new Random();
for (int i = 0; i < 5; i++) { // 快捷方式---->100.fori 循环100次
int num = r.nextInt(10); //r.nextInt()然后ALT+回车 [0,9)
System.out.println(num);
}
}
}
备注:创建一个Random 对象,每次调用
nextInt()
方法,都会生成一个随机数。
案例:获取随机数
获取1-n之间的随机数,包含n,代码如下:
package cn.luis.demo3;
import java.util.Random;
/*
题目要求:根据int变量的n值,来获取随机数字,范围是【1,n】.
思路:
1.定义一个int变量,随意赋值
2.要使用Random,三个步骤,导包,创建,使用
*/
public class Demo03Random {
public static void main(String[] args) {
final int n = 50; //随机次数
final int range = 10; //随机范围 【1,range】
Random r = new Random();
for (int i = 0; i < n; i++) {
int result1 = r.nextInt(range); //【0,9】
int result2 = r.nextInt(range) + 1; //【0,9】----->【1,10】
int result3 = r.nextInt((range + 1)); //【0,9】----->【0,10】
int result4 = r.nextInt(range + 1); //【0,9】----->【0,10】
System.out.println(result4);
}
}
}
案例:猜数字小游戏
游戏开始时,会随机生成一个1-100之间的整数number
。
玩家猜测一个数字guessMumber
,会与number
作比较,系统提示大了或者小了,直到玩家猜中,游戏结束。
package cn.luis.demo3;
import java.util.Random;
import java.util.Scanner;
/*
题目:用代码模拟猜数字小游戏
思路:
1.首先要产生一个随机数字,并且不能变化,Random的nextInt();
2.需要键盘输入,所以用到了Scanner
3.获取键盘输入的数字,用Scanner当中的nextInt()方法
4.已经得到了两个数字,判断(if)一下。
如果太大了,提示太大,并且重试。
如果太小了,提示太小,并且重试。
如果猜中了,游戏结束。
5.重试就是再来一次,循环次数不确定(可能是一直猜一个错的数),用while(true)循环
*/
public class Demo04RandomGame {
public static void main(String[] args) {
Random r = new Random();
int randomNum = r.nextInt(100) +1; //[1,100]
Scanner sc = new Scanner(System.in);
System.out.println("随机数字是:" + randomNum);
System.out.println("请输入你猜测的数字:【1~100】");
while (true) { //若有循环次数限制 用for循环更合适
int guessNum = sc.nextInt(); //键盘输入猜测的数字
if (guessNum > randomNum) {
System.out.println("太大了! 请重试。");
} else if (guessNum < randomNum) {
System.out.println("太小了! 请重试。");
} else {
System.out.println("恭喜你! 猜对啦。");
break; // 如果猜中,游戏结束
}
}
System.out.println("Game Over!");
}
}
案例:进阶版猜数字游戏
package cn.luis.demo3;
import java.util.Random;
import java.util.Scanner;
/*
进阶版猜数字游戏:带限制次数!!!!
*/
public class Demo05RandomGamePro {
public static void main(String[] args) {
final int count = 10; //猜数机会 3
final int range = 10; //范围【1,range】
final int real = 3; //接近值
Random r = new Random();
int randomNum = r.nextInt(range) + 1;
Scanner intput = new Scanner(System.in);
System.out.println("猜数机会:" + count + "次");
System.out.println("数字范围:【1," + range + "】");
System.out.println("临近值提示:" + real);
System.out.println("机器人:我就不告诉你我猜的数字是:" + randomNum);
System.out.println("请输入你猜测的数字:");
for (int i = 1; i <= count; i++) {
int guessNum = intput.nextInt();
if (i == count + 1 ) {
System.out.println((count-i) + " 次机会用完啦,下次再来吧!");
break;
} else {
if (guessNum > randomNum) {
if (guessNum <= randomNum + real) {
System.out.println("只大了一点点,加油! 还有" + (count-i) + "次机会");
} else {
System.out.println("太大啦,再来一次! 还有" + (count-i) + "次机会");
}
} else if (guessNum < randomNum) {
if (guessNum >= randomNum - real) {
System.out.println("只小了一点点,加油! 还有" + (count-i) + "次机会");
} else {
System.out.println("太小啦,再来! 还有" + (count-i) + "次机会");
}
} else {
System.out.println("恭喜你! 用了" + i + "次机会就猜对啦!");
break;
}
}
}
}
}