java中random取不重复的随机数(java的随机数random真的随机吗)

首先先跟大家道个歉,之前的几篇文章多多少少有些错误,我比较新手,希望大家多多担待,有什么错误的地方跟我说下哈~

好的,进入正题,今天我们来探讨下java里面产生随机数的方法,一般是有两种:

  1. 通过java内部的Random类获取随机数,主要是类里面的nextInt(),nextDouble()方法等等。Random的方法不是静态方法,要使用的话要先实例化对象。

  2. 通过Math.random()方法获得0~1之间的随机数。math类的方法是静态方法,可以直接点方法获得。

但是呢这里有个问题就是,random实例化对象的时候,调用的是有参的构造函数会怎么样呢?开始实验~~

先来分享一个获得四位随机字符的方法:

java中random取不重复的随机数(java的随机数random真的随机吗)(1)

随机产生四位字符

方法主要是先把所有的字符数据写进数组里,包括大小写英文字母和数字,然后再用随机出来的值作为下标去得到对应的字符。

下面开始进入正题了。

为了验证结果,做了三次实验:

java中random取不重复的随机数(java的随机数random真的随机吗)(2)

第一次结果

这是第一次的结果,大家看到我在实例化对象的时候,new了有参的random方法,产生的十次随机数如图所示,十次都是不同的结果,好的,开始下一次随机。

java中random取不重复的随机数(java的随机数random真的随机吗)(3)

第二次结果

可以根据math方法和随机四位字符来判断这不是同一次的结果,但是对比一下,随机出来的值和第一次一模一样!为了验证正确性,我们再运行一次。

java中random取不重复的随机数(java的随机数random真的随机吗)(4)

第三次结果

嗯哼?三次随机出来的结果都是一样的?难道不是随机产生的嘛?

原来,随机数里还有种子一说,我们再实例对象的时候,new random()如果不设置里面的值,也就是种子的话,系统默认的种子是System.nanoTime()的返回值,这个值也是不确定的(每个操作系统的值是不同的,同一个操作系统的值也是会不同的),所以相当于每次随机出来的种子不同,每个种子对应一个数列,相同的种子会得到相同数列,而不是数值。所以如果在构造函数中指定种子,会得到同一个数列。

最后附上今天学习的十个单词:

long 长整型

float 浮点型

double 双精度浮点型

if 如果

else 否则

switch 多路分支

case 事例 (与switch搭配使用,与值匹配)

break 中止

default 默认

while 当

谢谢大家的收看~

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页