前言:

  每一门程序设计语言基本都具有一个随机函数,而Java当中产生随机数的方式不拘一格。而且其中的Random工具类还有着更深入的应用,但本文仅对比3种产生随机数的方式,就不深入扩展分析其内部工具类了。

1)System.currentMillis()函数返回基于当前时间的Long整型随机数;

2)Math.random()返回0到1之间的浮点数,而且属于左闭右开:[0,1);

3)通过New Random().nextInt()实例化对象并利用函数产生一个int类型的随机数。

三种不同方式的代码实现如下:

 package random;

 import java.util.Random;

 import org.junit.Test;

 public class RandomTest {

     public static void main(String[] args) {
new RandomTest().testRandom1();
new RandomTest().testRandom2();
new RandomTest().testRandom3();
} /*
* 根据当前的标准时间,返回单个long类型的随机数
*/
@Test
public void testRandom1() {
System.out.println(System.currentTimeMillis());
} /*
* 采用Math类产生随机数,其返回浮点类型,区间为:[0,1)
*/
@Test
public void testRandom2() {
for(int i=0;i<10;i++)
System.out.println(Math.random());
} /*
* 利用Randoml工具类,产生10个随机数 当种子seed一样时,产生的2个序列相同
*/
@Test
public void testRandom3() {
Random random1 = new Random(1);
for (int i = 0; i < 10; i++) {
System.out.print(random1.nextInt()+" ");
}
System.out.println();
Random random2 = new Random(1);
for (int i = 0; i < 10; i++) {
System.out.print(random2.nextInt()+" ");
}
}
}

另外,考虑到有些情况下我们需要批量产生随机数,故写了下面的程序。其功能是实现批量产生N个[0,MAX)范围内的随机数并写入txt文件:

 package random;

 import java.io.File;
import java.io.PrintWriter; public class RandomFactory { final static int N=1000000; //产生的随机数的个数
final static int MAX=10000; // 产生随机数的范围:[0,MAX)
final static String PATH="D:/random100w.txt"; //生成的文件路径
public static void main(String[] args) throws Exception{ PrintWriter output = new PrintWriter(new File(PATH));
for(int i=0;i<N;i++){
int x=(int)(Math.random()*1e4);
output.println(x);
}
//记得关闭字符流
if(output!=null){
output.close();
}
System.out.println("--End--");
} }

Java产生随机数的更多相关文章

  1. java产生随机数的几种方式

    java产生随机数的几种方式 一.在j2se里我们可以使用Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double,我们可以把他乘以一定的数,比如说乘以100,他 ...

  2. JAVA获取随机数

    在Java中我们能够使用java.util.Random类来产生一个随机数发生器.它有两种形式的构造函数,各自是Random()和Random(long seed).Random()使用当前时间即Sy ...

  3. java 获取随机数的三种方法

    方法1(数据类型)(最小值+Math.random()*(最大值-最小值+1))例:(int)(1+Math.random()*(10-1+1))从1到10的int型随数 方法2获得随机数for (i ...

  4. Java获取随机数的几种方法

    Java获取随机数的几种方法 .使用org.apache.commons.lang.RandomStringUtils.randomAlphanumeric()取数字字母随机10位; //取得一个3位 ...

  5. java设置随机数教程

    java作为程序猿开发人员都在使用的一款编程语言,许多入门的朋友都陷入了一个简单的问题就是,使用java开发时随机数要怎么设置?java怎么设置随机数?经常会有地方需要用到随机数,不用着急,一起来看看 ...

  6. java生成随机数方法

    java生成随机数方法: String random = String.valueOf(new Random().nextInt(9000)); String timestamp = String.v ...

  7. Java中随机数的产生方式与原理

    查阅随机数相关资料,特做整理 首先说一下java中产生随机数的几种方式 在j2se中我们可以使用Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double,我们可以 ...

  8. JAVA生成随机数

    java中一般有两种随机数,一个是Math中random()方法,一个是Random类. 一.Math.random() 随即生成0<x<1的小数. 实例:如何写,生成随机生成出0~100 ...

  9. Java基础(9):Java生成随机数一定范围内的数的一个典型例子

    题目:编写一个JAVA程序,创建指定长度的 int 型数组,并生成 100 以内随机数为数组中的每个元素赋值,然后输出数组 note: 通过 (int)(Math.random() * 100) 生成 ...

随机推荐

  1. SQL/LINQ/Lamda

    SQL LINQ Lambda SELECT * FROM HumanResources.Employee from e in Employees select e Employees   .Sele ...

  2. git push上传代码到gitlab上,报错401或403

    之前部署的gitlab代码托管平台,采用ssh方式连接gitlab,在客户机上产生公钥上传到gitlab的SSH-Keys里,则git clone下载和git push上传都没问题,这种方式很安全. ...

  3. 未能正确加载包“Microsoft.Data.Entity.Design.Package.MicrosoftDataEntityDesignPackage

    本文出处:http://blog.sina.com.cn/s/blog_6fe3efa301016i64.html vs 2005 ,vs 2008, vs 2010,安装后有时出现这个错误(我的机器 ...

  4. 将packages/apps/下的app导入eclipse

    当刚接触android自带的一个模块时,如何去熟悉它?相信不少人第一步都会尝试着去了解其内容的调用流程,而此时若能够单步调试则显得非常重要了,于是有了文章标题所说的尝试. 作者这里要导入的是Setti ...

  5. MVC-RedirectToAction跳转到其他Area

    mvc使用Area分区开发后,存在不同Area之间的跳转,需要为每个区间添加Area规则,如下: using System.Web.Mvc; namespace web.Areas.FrameSet ...

  6. Oracle字符分隔函数(split)

    为了让 PL/SQL 函数返回数据的多个行,必须通过返回一个 REF CURSOR 或一个数据集合来完成.REF CURSOR 的这种情况局限于可以从查询中选择的数据,而整个集合在可以返回前,必须进行 ...

  7. Angular权威指南学习笔记(转)

    http://www.cnblogs.com/lzhp/p/4000741.html 第一章.        初识Angular——Angular是MVW的Js框架. 第二章.        数据绑定 ...

  8. 《细细品味Hive》系列课程

    Hi,博友: 我是解耀伟,笔名是虾皮,最近我在极客学院录制Hive系列教程,也是督促自己学习一种方式,可以把自己的学习积累有方向,星期天也能做点有意义的事情.在做每一期的过程中,需要找资料,总结,先自 ...

  9. 页面跳转Transfer与Redirect的区别你知道吗?

    一 前言 关于页面跳转的方式常用的应该就是,链接跳转,js跳转,Server.Tranfser和Response.Redirect 这几种,可是在Tranfser与Redirect之间用哪种更好(本文 ...

  10. <实训|第九天>掌握linux中普通的权限控制和三种特殊的权限(sst),做合格的运维工程师

    linux中,权限的学习是必不可少的,不论是作为一名运维工程师或者是单一的管理者,学习好linux中的权限控制,你就可以保护好自己的隐私同时规划好你所管理的一切. 权限的学习是很多的,不要认为自己已经 ...