`
Tony_Lee-S
  • 浏览: 82772 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java产生随机数的几种方式(转)

阅读更多
一.在j2se里我们可以使用Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double,我们可以把他乘以一定的数,比如说乘以100,他就是个100以内的随机,这个在j2me中没有。

二.在java.util这个包里面提供了一个Random的类,我们可以新建一个Random的对象来产生随机数,他可以产生随机整数、随机float、随机double,随机long,这个也是我们在j2me的程序里经常用的一个取随机数的方法。

三.在我们的System类中有一个currentTimeMillis()方法,这个方法返回一个从1970年1月1号0点0分0秒到目前的一个毫秒数,返回类型是long,我们可以拿他作为一个随机数,我们可以拿他对一些数取模,就可以把他限制在一个范围之内啦

其实在Random的默认构造方法里也是使用上面第三种方法进行随机数的产生的


对于方法二中的Random类有以下说明:

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

不带种子:
此种方式将会返回随机的数字,每次运行结果不一样

public class RandomTest {
public static void main(String[] args) {
  java.util.Random r=new java.util.Random();
for(int i=0;i<10;i++){
    System.out.println(r.nextInt());
}

}
带种子:
此种方式,无论程序运行多少次,返回结果都是一样的

public static void main(String[] args) {
  java.util.Random r=new java.util.Random(10);
  for(int i=0;i<10;i++){
    System.out.println(r.nextInt());
  }
}

两种方式的差别在于

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

此类的实例用于生成伪随机数流,此类使用 48 位的种子,该种子可以使用线性同余公式对其进行修改(请参阅 Donald Knuth 的《The Art of Computer Programming, Volume 2》,第 3.2.1 节)。 

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

Java Doc对Random类已经解释得非常明白,我们的测试也验证了这一点。

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

/** 
* Creates a new random number generator. Its seed is initialized to 
* a value based on the current time:
* Random() { this(System.currentTimeMillis()); }java.lang.System#currentTimeMillis()
*/
public Random() { this(System.currentTimeMillis()); }


另外: 

random对象的nextInt(),nextInt(int n)方法的说明:

int nextInt() 
    返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。 
int nextInt(int n) 
    返回一个伪随机数,它是从此随机数生成器的序列中取出的、在 0(包括)和指定值(不包括)之间均匀分布的 int值。
转自:
http://www.blogjava.net/cool2009/archive/2009/03/15/259882.html
分享到:
评论

相关推荐

    java产生随机数的几种方式

    以下将详细介绍Java中生成随机数的几种方式。 1. **Math.random() 方法** `Math.random()` 是Java中最常用的方式来生成随机数。它返回一个双精度浮点数,其值在0.0(包括)到1.0(不包括)之间。可以通过简单的...

    Java产生随机数代码 各种方法

    本文将详细介绍几种在Java中生成随机数的方法,并以代码示例进行说明。 1. 使用`Math.random()`函数: `Math.random()`函数是Java中最基本的随机数生成方式,它返回一个在0.0(包括)到1.0(不包括)之间的double...

    Java随机数的几种实现方式

    Java实现随机数的几种方式:1.使用Math.random产生随机数;2.使用Random产生随机数;3.使用ThreadLocalRandom产生随机数,在多线程场景下效率更高;4.使用SecureRandom产生随机数,更安全。本代码实现了产生一个指定...

    浅谈java中的几种随机数

    本文将深入探讨Java中生成随机数的几种方法及其特点。 首先,最基本的随机数生成方法是使用`java.lang.Math.random()`。这个静态方法返回一个介于0.0(包括)到1.0(不包括)之间的双精度浮点数。要生成指定范围内...

    浅谈Java中的几种随机数

    总结一下,在Java中生成随机数主要有以下几种方式: 1. 使用java.lang.Math.random(),这是一种简单快捷的方式,适用于单线程环境或对性能要求不高的情况。 2. 使用java.util.Random类创建实例来生成随机数,这种...

    java随机数4-36位

    总之,Java的`Random`类为我们提供了一种灵活的方式去生成各种类型的随机数。在设计验证码或订单编号系统时,我们可以结合时间戳和其他随机成分来确保生成序列的独特性和安全性。通过适当调整参数,可以轻松地生成4...

    浅谈Java中随机数的几种实现方式

    本文将详细探讨Java中生成随机数的几种实现方式,包括基础的Math.random方法以及更高级的并发实现。 首先,最基本的随机数生成方式是通过`Math.random()`方法。这个方法返回一个0.0到1.0之间的双精度浮点数,包含...

    产生随机数的源代码.zip

    总结起来,这个压缩包很可能包含了几种编程语言的随机数生成源代码示例,帮助开发者了解如何在代码中生成随机数。无论是初学者还是经验丰富的程序员,理解和掌握随机数生成都是至关重要的技能,因为它在IT领域的各个...

    java-随机数生成

    Java随机数生成 随机数有三种生成方式 1.通过Math.random()方法 2.通过System.currentTimeMillis()方法获取毫秒数, 3.通过Random类 ——————————————————————使用开发工具MyEclipse10 第一种:...

    JAVA中一类随机数生成方法设计思想.pdf

    在 JAVA 中,传统的随机数产生方法有两种:一种是使用 java.lang.Math.random() 静态方法,产生随机数范围是 [0, 1) ;另一种是创建 java.util.Random 对象,再利用 nextInt()、nextFloat() 等函数产生随机整数、...

    Java中常用的三种产生随机数的方法详解(currentTimeMills,random,Math.random)

    Java中常用的三种产生随机数的方法及其原理详解(currentTimeMills,random,Math.random) 这学期笔者开始学习Java,由于以前有了C做基础,学Java明显可以轻松许多,但是这几天有个问题很苦恼,有几道题目要...

    Java Random类的详细介绍(Java生成随机数)

    几种常用的随机数生成二、Random类的详细介绍1.生成指定范围的数字2.Random.nextInt()与Math.random()的区别 一、Random类的使用 Random类的功能,生成一个随机数 1.Random类生成随机数(int)的基本语法: (1)生成...

    浅谈Java中的n种随机数产生办法

    总结来说,Java提供了多种生成随机数的方式,包括`Math.random()`、`Random`类以及`ThreadLocalRandom`。根据不同的需求,如内存优化、线程安全或高性能,可以选择合适的方法。在实际应用中,应确保随机数的分布均匀...

    安卓验证码相关-1420725588121一个随机数产生实例.rar

    这个压缩包文件"安卓验证码相关-1420725588121一个随机数产生实例.rar"可能包含了一个关于如何在Android平台上生成验证码的示例。验证码通常涉及到随机数的生成,而随机数在安全性和不可预测性方面有着严格的要求。 ...

    随机数生成

    生成随机数的方法主要有以下几种: 1. **线性同余法**:是最常见的伪随机数生成算法之一,基于数学公式 `(x_{n+1} = (ax_n + c) mod m)`,其中 `a`、`c` 和 `m` 是预先设定的常数,`x_n` 是当前的随机数,`x_0` 是...

    随机数游戏

    在IT领域,随机数游戏是一种常见的编程练习,用于学习编程语言中的随机数生成技术。在游戏中,随机数可以用于模拟各种不确定性的事件,如掷骰子、抽奖、AI决策等。以下将详细介绍关于随机数游戏的相关知识点。 首先...

    生成不重复随机数的算法

    本文将详细介绍几种不同的方法来实现这一功能,并通过具体的Java代码示例来进行说明。 #### 方法一:使用布尔数组标记法 这种方法的基本思想是利用一个布尔数组来标记已经生成过的随机数,确保不会重复生成相同的...

    生成指定随机数不重复的例子(可用)

    总结来说,这个例子提供了一种在Java中生成指定范围内不重复随机数的方法,通过结合`Random`类和集合数据结构实现。在myEclipse环境下,只需几步简单操作,即可运行并测试这段代码。对于开发者来说,理解和掌握这种...

Global site tag (gtag.js) - Google Analytics