`
Tony_Lee-S
  • 浏览: 79679 次
  • 性别: 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产生随机数的几种方式 java产生随机数的几种方式 java产生随机数的几种方式 java产生随机数的几种方式

    浅谈java中的几种随机数

    浅谈java中的几种随机数,浅谈java中的几种随机数,浅谈java中的几种随机数,浅谈java中的几种随机数

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

    主要介绍了Java中随机数的几种实现方式,从最简单的Math.random到多线程的并发实现都在本文所列之中,需要的朋友可以参考下

    浅谈Java中的几种随机数

    浅谈Java中的几种随机数

    Java各种排序算法_随机数

    Java 排序 随机数 算法收录了几种java常见的排序算法!

    java-随机数生成

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

    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种随机数产生办法

    众所周知,随机数是任何一种编程语言最基本的特征之一。而生成随机数的基本方式也是相同的:产生一个0到1之间的随机数。看似简单,但有时我们也会忽略了一些有趣的功能。

    javascript 产生随机数的几种方法总结

    javascript 产生随机数的几种方法总结 1、取两个数之间的随机数 function GetRandomNum(Min,Max){ var Range = Max - Min; var Rand = Math.random(); return(Min + Math.round(Rand * Range)); } 2、混合法 ...

    Java贪吃蛇游戏实训(源代码+可运行Jar包+实训报告)

    (2) 使用Random函数来产生随机数,在规定的范围空间内随机产生食物,蛇通过方向键来获取这些食物。(3)蛇一旦吃到食物就增加身体的长度,并会获得一定的得分,在碰到自身时游戏结束运行,否则游戏正常运行。本次项目...

    Java 2平台安全技术-结构,API设计和实现

    7.6.4 随机数产生算法 137 7.6.5 证书类型 137 7.6.6 密钥库类型 137 7.7 算法 137 7.7.1 SHA-1消息摘要算法 138 7.7.2 MD2消息摘要算法 138 7.7.3 MD5消息摘要算法 138 7.7.4 数字签名算法 138 7.7.5 基于RSA的签名...

    DAY_13 Java常用类及异常处理.md

    该文档从简单的Java程序入手,介绍了如何产生随机数,介绍了正则表达式的关键,在实际开发中,我们需要知道正则表达式的规律和格式,切记不可忽略这些小小的细节问题。同时本文还介绍了异常的几种情况,更清晰的认识...

    JAVA 2平台安全技术-结构,API设计和实现

    7.6.4 随机数产生算法 137 7.6.5 证书类型 137 7.6.6 密钥库类型 137 7.7 算法 137 7.7.1 SHA-1消息摘要算法 138 7.7.2 MD2消息摘要算法 138 7.7.3 MD5消息摘要算法 138 7.7.4 数字签名算法 138 7.7.5 基于RSA的签名...

    java范例开发大全源代码

    第1篇 Java编程基础  第1章 Java开发环境的搭建(教学视频:9分钟) 2  1.1 理解Java 2  1.2 搭建Java所需环境 3  1.2.1 下载JDK 3  1.2.2 安装JDK 4  1.2.3 配置环境 5  1.2.4 测试JDK配置...

    java范例开发大全

    第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置是否成功 7 实例1 开发第一个Java...

    Java范例开发大全 (源程序)

    第1篇 Java编程基础  第1章 Java开发环境的搭建(教学视频:9分钟) 2  1.1 理解Java 2  1.2 搭建Java所需环境 3  1.2.1 下载JDK 3  1.2.2 安装JDK 4  1.2.3 配置环境 5  1.2.4 测试JDK配置是否成功 7...

    JavaFocus::hammer: Java重点内容 博客文章 样例

    JavaFocus:hammer: Java学习重点 ...success和isSuccessequals 和 ==String为什么是不可变的字符串常量池为什么直接定义的字符串可以调用String对象的各种方法JDK6 和 JDK7 substring原理的改变字符串拼接的几种方式

Global site tag (gtag.js) - Google Analytics