11.【Random类】

概念

查看类

  • 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;
                }
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值