,,Java Random.nextInt()方法原理解析

,,Java Random.nextInt()方法原理解析

本文主要介绍Java Random.nextInt()方法的原理分析,通过示例代码进行详细介绍。对大家的学习或者工作都有一定的参考价值,有需要的朋友可以参考一下。

lic int nextInt(int n)

这个方法的作用是产生一个随机int值,这个值在[0,n]的范围内,即0到n之间的随机int值,包含0但不包含n。

关于随机r=新随机中47的意义(47)

今天,当我在研究Java编程思想时,我看到了这样一段代码:

Random r=new Random(47);

int a=r . nextint(26);

system . out . println(a);

一开始,我没有注意那47。我以为是47以内的随机数,结果看到后面的nextInt(26)里有个26。我以为26应该是随机数的范围,那么这个47是什么呢?

然后看源代码,但是看不懂。我知道这只是个种子,然后百度了一下,终于明白了一部分,如下:

首先,了解种子的概念:

如果你想得到一个范围内的随机数(比如26,这个随机数可能是0-25),你首先需要一个种子(实际上是一个数值)。

每个种子将对应于这个范围(0-26)内的唯一随机数。

47的种子在26的范围内,对应的随机数是24,所以每次随机结果都是24。

(注:47对应26范围内的24。这个死定了,不管执行多少次还是24)

至于为什么seed 47对应24,这个算法涉及到java封装。有兴趣的可以多了解一下。

但是您可能会发现,当我们生成随机数时,我们通常不会传递该种子,如下所示:

Random r=new Random();

int a=r . nextint(26);

system . out . println(a);

然后我运行的时候发现每次运行的结果都不一样。它是一个所谓的随机数。本来如果没有种子,程序会以当前日期的毫秒为种子,所以每次的种子都会不一样。因为每次的毫秒不一样,随机数的个数也会不一样。

总之,new Random(47)中的47表示生成随机数的种子,nextInt(26)表示随机数的范围。种子和范围是相关的,一个种子对应一个范围内的固定随机数。如果没有填充种子,默认情况下将当前时间的毫秒数作为种子来生成随机数。

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: