从零学Java(27)之 Random随机数

作者简介

作者名:编程界明世隐
简介:CSDN博客专家,从事软件开发多年,精通Java、JavaScript,博主也是从零开始一步步把学习成长、深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢迎您关注,期待与您一起学习、成长、起飞!

从零学Java(27)之 Random随机数_第1张图片

导航

✪ 从零学Java系列目录索引
◄上一篇【26】continue语句详解
►下一篇待更新     

热门专栏推荐

【1】Java小游戏(俄罗斯方块、飞机大战、植物大战僵尸等)
【2】JavaWeb项目实战(图书管理、在线考试、宿舍管理等)
【3】JavaScript精彩实例(飞机大战、贪吃蛇、验证码等)
【4】Java小白入门200例
【5】从零学Java、趣学Java
【6】Idea从零到精通

引言

♀ 小AD:明哥,最近怎么回事呢?
♂ 明世隐:什么怎么回事,我很好啊!
♀ 小AD:我是说最近你没教我Java。
♂ 明世隐:哦是吗?我感觉你不对劲!
♀ 小AD:有什么不对劲的,我就是想学Java而已,我是一个爱学习的孩子。
♂ 明世隐:给你一次机会,重新问一次
♀ 小AD:好吧,我是想问,最近你上分了不 ?
♂ 明世隐:你看不到吗,我都没打。
♀ 小AD:为啥不打呢,之前不是一直带我飞的吗,现在。。。
♂ 明世隐:我是最近太忙了
♀ 小AD:忙什么呢?
♂ 明世隐:加班,项目验收。
♀ 小AD:那不是好事吗。
♂ 明世隐:对老板来说是好事,对我们来说是加班。
♀ 小AD:啊这。。。
♂ 明世隐:所以我决定跟你讲讲 Random随机数。
♀ 小AD:? 这有什么关联吗
♂ 明世隐:没有,就单纯的想带你学习学习。
♀ 小AD:啊你这突然刹车的,给我整懵了。
♂ 明世隐:没事Java会让你清醒的。
♀ 小AD:那来吧。

描述

Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。
相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。这点在生成多个随机数字时需要特别注意。

这里只介绍public Random()构造方法的使用。

步骤介绍

  1. 导包
    import java.util.Random;
    注意:导包操作必须在类定义上方。
  2. 用构造方法创建实例对象
    Random r = new Random();
    注意:上述创建格式处理实例对象名 r 可以修改(符合java命名规范即可),其他是不能改变的。
  3. 获取随机数,并打印输出
    int num = r.nextInt();
    System.out.println(num);

注意:nextInt方法,生成一个随机的int值,该值介于int的区间。

实例代码1

import java.util.Random;

public class MyRandom {
     

	public static void main(String[] args) {
     
		Random r = new Random();
		
		int num = r.nextInt();
		System.out.println(num);
	}
}

运行结果(运行了4次):

-1190047165

555081350

1126702105

-2045031442

♀ 小AD:明哥是不是import都要这么写,放到类定义的上边。
♂ 明世隐:是要这么写的,你定义到类的下边或者里面会导致编译错误。
♀ 小AD:哦懂了,这个记住就好了
♂ 明世隐:Random r = new Random() 这句里面的 r 是可以自己定义的,符合java命名规范即可。
♀ 小AD:
Random random = new Random();
Random ran = new Random();

♂ 明世隐:这都可以,下面使用这个实例对象的时候换一下即可。
♀ 小AD:哦我懂了,但明哥我有个问题,你这样随机出的东西感觉那么大,乱七八糟,好像没什么用呢。
♂ 明世隐:随机数本来也就是随机的,有啥问题?
♀ 小AD:我的意思是不好控制,不规律。
♂ 明世隐:随机数本来就是不规律,不过你说的意思我懂了。

实例代码2

import java.util.Random;

public class MyRandom {
     
	public static void main(String[] args) {
     
		Random r = new Random();
		
		int num = r.nextInt(10);
		System.out.println(num);
	}
}

♀ 小AD:这是可以取到10?
♂ 明世隐:这是可以随机取到0-10 之间的int型数字,不包含10。
♀ 小AD:0、1、2、3、4、5、6、7、8、9咯,对吧
♂ 明世隐:对的
♀ 小AD:那好像还挺好用的,这样。
♂ 明世隐:来跑一下程序看看。

运行结果:

2

实例代码3

对上述代码加上循环,看看随机取数字的效果

import java.util.Random;

public class MyRandom {
     

	public static void main(String[] args) {
     
		Random r = new Random();
		int num = 0;
		for (int i = 0; i < 20; i++) {
     
			 num = r.nextInt(10);
			 System.out.println("第("+(i+1)+")次取到的随机数:"+num);
		}
	}
}

运行结果:

第(1)次取到的随机数:3
第(2)次取到的随机数:8
第(3)次取到的随机数:5
第(4)次取到的随机数:9
第(5)次取到的随机数:5
第(6)次取到的随机数:1
第(7)次取到的随机数:5
第(8)次取到的随机数:2
第(9)次取到的随机数:1
第(10)次取到的随机数:2
第(11)次取到的随机数:4
第(12)次取到的随机数:7
第(13)次取到的随机数:1
第(14)次取到的随机数:6
第(15)次取到的随机数:8
第(16)次取到的随机数:2
第(17)次取到的随机数:8
第(18)次取到的随机数:0
第(19)次取到的随机数:5
第(20)次取到的随机数:7

♀ 小AD:学费了学费了
♂ 明世隐:啥,你要给明哥交学费?那赶紧好,微信还是支付宝。
♀ 小AD:啊这,我其实想说“学废了”
♂ 明世隐:咋滴,哥教的不好吗?
♀ 小AD:不是不是,明哥教的老好了。
♂ 明世隐:有这句话好了,开玩笑的,记得请明哥喝奶茶。
♀ 小AD:没问题,待会就给你冬天的第一杯奶茶。
♂ 明世隐:收到
♀ 小AD:我有个问题,那随机的话,就是没有规律咯。
♂ 明世隐:确实是没有规律,但按概率学来说,最终也是会趋于55开的。
♀ 小AD:开哥?
♂ 明世隐:我说的是0-9这几个数字,如果按概率学来说,他们出现的概率是一样的。
♀ 小AD:哦,知道了。你现在取的是0-9,那我想取0-10,是不是把10 换成11 就行。
♂ 明世隐:对的,试试

实例代码4

import java.util.Random;

public class MyRandom {
     

	public static void main(String[] args) {
     
		Random r = new Random();
		int num = 0;
		for (int i = 0; i < 20; i++) {
     
			 num = r.nextInt(11);
			 System.out.println("第("+(i+1)+")次取到的随机数:"+num);
		}
	}
}

运行结果:

第(1)次取到的随机数:6
第(2)次取到的随机数:8
第(3)次取到的随机数:1
第(4)次取到的随机数:2
第(5)次取到的随机数:5
第(6)次取到的随机数:1
第(7)次取到的随机数:3
第(8)次取到的随机数:0
第(9)次取到的随机数:7
第(10)次取到的随机数:2
第(11)次取到的随机数:3
第(12)次取到的随机数:3
第(13)次取到的随机数:8
第(14)次取到的随机数:10
第(15)次取到的随机数:0
第(16)次取到的随机数:9
第(17)次取到的随机数:4
第(18)次取到的随机数:1
第(19)次取到的随机数:1
第(20)次取到的随机数:10

♀ 小AD: 嗯,果然出现了10了
♂ 明世隐:没问题了吧。
♀ 小AD:不我还有问题,我想得到1-10的随机数呢,你之前都是从0到10类似这样的。
♂ 明世隐:这个也没问题,看代码。

实例代码5

import java.util.Random;

public class MyRandom {
     

	public static void main(String[] args) {
     
		Random r = new Random();
		int num = 0;
		for (int i = 0; i < 20; i++) {
     
			 num = r.nextInt(10)+1;
			 System.out.println("第("+(i+1)+")次取到的随机数:"+num);
		}
	}
}

运行结果:

第(1)次取到的随机数:3
第(2)次取到的随机数:6
第(3)次取到的随机数:7
第(4)次取到的随机数:1
第(5)次取到的随机数:8
第(6)次取到的随机数:4
第(7)次取到的随机数:1
第(8)次取到的随机数:6
第(9)次取到的随机数:3
第(10)次取到的随机数:9
第(11)次取到的随机数:4
第(12)次取到的随机数:4
第(13)次取到的随机数:7
第(14)次取到的随机数:7
第(15)次取到的随机数:2
第(16)次取到的随机数:5
第(17)次取到的随机数:9
第(18)次取到的随机数:3
第(19)次取到的随机数:2
第(20)次取到的随机数:6

♀ 小AD:这是什么原理呢?
♂ 明世隐:这还不简单啊,我问你:原来的r.nextInt(10)取到的数的范围是什么?
♀ 小AD:0-9 的呀
♂ 明世隐:那我给它们 +1 你说范围应该是多少?
♀ 小AD:好像是1-10了?
♂ 明世隐:自信点把好像去掉,你想一下,不管随机到什么数,都会进行加1操作,所以取到0的时候+1变成1,取到9的时候+1变成10,其他的以此类推。
♀ 小AD:嗯我, 懂了,明哥牛b。
♂ 明世隐:那好,今天我来举一个你喜欢的实例。
♀ 小AD:当真?
♂ 明世隐:那必须的。

明世隐举例

import java.util.Random;

public class MyRandom {
     

	public static void main(String[] args) {
     
		System.out.println("小AD进行一盘大乱斗");
		System.out.println("小AD进入随机选英雄阶段");
		String[]  heros = {
     "小鲁班","马克","狄仁杰","后羿","阿离","孙尚香"}; 
		Random r = new Random();
		
		int index = r.nextInt(heros.length);
		String hero = heros[index];
		System.out.println("小AD随机到的英雄是:"+hero);
		
		System.out.println("小AD随被对面疯狂折磨!");
		System.out.println("小AD心态爆炸、游戏结束!");
	}
}

运行结果:

小AD进行一盘大乱斗
小AD进入随机选英雄阶段
小AD随机到的英雄是:阿离
小AD随被对面疯狂折磨!
小AD心态爆炸、游戏结束!

♀ 小AD:明哥你真的坏,打个大乱斗怎么就会被折磨。
♂ 明世隐:别想多我就是简单举个例子,就是用到r.nextInt(heros.length),就可以随机的从heros这个数组里面取到一个下标,下标的范围就是0-heros.length,这里数组的长度是6,所以取到的是0-6(不含6),然后再通过下标从数组里面取出对应的名称即可。
♀ 小AD:这个随机的我倒是看明白了,可是你这个数组我好像还不太懂。
♂ 明世隐:不着急,这个马上就会学到,先就用来做个实例。
♀ 小AD:行哦,那我赶紧去大乱斗一把,巩固一下所学的Java知识。
♂ 明世隐:牛b,我竟无法反驳!

小结

这节总结了“ Random随机数 ”,希望能对大家有所帮助,请各位小伙伴帮忙 【点赞】+【收藏】+ 【评论区打卡】, 如果有兴趣跟小明哥一起学习Java的,【关注一波】不迷路哦。

评论区打卡一波让我知道你,明哥会持续关注你的学习进度哦!

导航

✪ 从零学Java系列目录索引
◄上一篇【26】continue语句详解
►下一篇待更新     

热门专栏推荐

【1】Java小游戏(俄罗斯方块、飞机大战、植物大战僵尸等)
【2】JavaWeb项目实战(图书管理、在线考试、宿舍管理等)
【3】JavaScript精彩实例(飞机大战、贪吃蛇、验证码等)
【4】Java小白入门200例
【5】从零学Java、趣学Java
【6】Idea从零到精通
在这里插入图片描述

你可能感兴趣的:(从零学Java,java,Random,从零学Java)