专栏首页lgp20151222Java获取随机数的3种方法

Java获取随机数的3种方法

最小值---最大值(整数)的随机数

方法1  (数据类型)(最小值+Math.random()*(最大值-最小值+1)) 例:

(int)(1+Math.random()*(10-1+1))
//从1到10的int型随数

方法2 (类型)最小值+Math.random()*最大值

for (int i=0;i<30;i++){
  System.out.println((int)(1+Math.random()*10));
}
//通过java.Math包的random方法得到1-10的int随机数

方法3

Random ra =new Random();
for (int i=0;i<30;i++){
    System.out.println(ra.nextInt(10)+1);
}
// 通过java.util包中的Random类的nextInt方法来得到1-10的int随机

生成[0,d)区间的随机小数,d为任意正的小数,则只需要将nextDouble方法的返回值乘以d即可。

[n1,n2] 也就是 ra.nextDouble() * (n2-n1)+n1

ps.java.util.Random类有两种方式构建方式:带种子和不带种子.

总结:不带种子多次返回结果不一样,带种子多次返回结果一样,故每次使用随机数应new一个出来即可保证全随机

然并卵,仅仅需要一个随机数的话,直接用毫秒数就好了

两种方式的差别在于

(1) 首先请打开Java Doc,我们会看到Random类的说明:

此类的实例用于生成伪随机数流,此类使用 48 位的种子,该种子可以使用线性同余公式对其进行修改。如果用相同的种子创建两个 Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。为了保证实现这种特性,我们为类Random指定了特定的算法。为了 Java 代码的完全可移植性,Java 实现必须让类 Random 使用此处所示的所有算法。但是允许 Random 类的子类使用其他算法,只要其符合所有方法的常规协定即可。

(2) 如果没有提供种子数,Random实例的种子数将是当前时间的毫秒数,可以通过System.currentTimeMillis()来获得当前时间的毫秒数。打开JDK的源代码,我们可以非常明确地看到这一点。

public Random() { 
    this(System.currentTimeMillis()); 
}
//所以new什么Random啊,直接获取毫秒数

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • golang配置 GoGetProxyConfig,goproxy.io的介绍

    ydymz
  • Spring注解之@Lazy注解,源码分析和总结

    关于延迟加载的问题,有次和大神讨论他会不会直接或间接影响其他类。spring的好处就是文档都在代码里,网上百度大多是无用功。

    ydymz
  • JQuery跳出each循环的方法(包含数组遍历)

    break----用return false;  continue --用return ture;

    ydymz
  • Java-跳转控制语句

    DataScience
  • Java基本类型数据转换

    DataScience
  • 【机器学习】今天想跟大家聊聊SVM

    之前我在自己的简书上写过SVM,可是当时写的只是皮毛(主要是现在忘了O.O),那么现在想再次拾起的原因是什么呢?

    zenRRan
  • Java基础-Java基础-02总结关键字,标识符,注释,常量进制,变量数据类型

    首先原谅小编的过错,昨天第二篇文章标题是: 程序员:为什么选择Java? ? 1:关键字(掌握) (1)被Java语言赋予特定含义的单词 (2)特点: 全...

    Java帮帮
  • 杨老师课堂_Java教程第五篇之函数运用

    今天主要是讲解以下知识点: 1、方法基础知识 2、方法高级内容 3、方法案例

    杨校
  • Java基础之关键字,标识符,注释,数据类型

    Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等。

    南风
  • Idea几个常用快捷键 顶

    Alt+Ins 除了自动设置get,set以外,当然就是重写接口或者父类的方法。

    算法之名

扫码关注云+社区

领取腾讯云代金券