前言:

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

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

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

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

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

  1. package random;
  2.  
  3. import java.util.Random;
  4.  
  5. import org.junit.Test;
  6.  
  7. public class RandomTest {
  8.  
  9. public static void main(String[] args) {
  10. new RandomTest().testRandom1();
  11. new RandomTest().testRandom2();
  12. new RandomTest().testRandom3();
  13. }
  14.  
  15. /*
  16. * 根据当前的标准时间,返回单个long类型的随机数
  17. */
  18. @Test
  19. public void testRandom1() {
  20. System.out.println(System.currentTimeMillis());
  21. }
  22.  
  23. /*
  24. * 采用Math类产生随机数,其返回浮点类型,区间为:[0,1)
  25. */
  26. @Test
  27. public void testRandom2() {
  28. for(int i=0;i<10;i++)
  29. System.out.println(Math.random());
  30. }
  31.  
  32. /*
  33. * 利用Randoml工具类,产生10个随机数 当种子seed一样时,产生的2个序列相同
  34. */
  35. @Test
  36. public void testRandom3() {
  37. Random random1 = new Random(1);
  38. for (int i = 0; i < 10; i++) {
  39. System.out.print(random1.nextInt()+" ");
  40. }
  41. System.out.println();
  42. Random random2 = new Random(1);
  43. for (int i = 0; i < 10; i++) {
  44. System.out.print(random2.nextInt()+" ");
  45. }
  46. }
  47. }

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

  1. package random;
  2.  
  3. import java.io.File;
  4. import java.io.PrintWriter;
  5.  
  6. public class RandomFactory {
  7.  
  8. final static int N=1000000; //产生的随机数的个数
  9. final static int MAX=10000; // 产生随机数的范围:[0,MAX)
  10. final static String PATH="D:/random100w.txt"; //生成的文件路径
  11. public static void main(String[] args) throws Exception{
  12.  
  13. PrintWriter output = new PrintWriter(new File(PATH));
  14. for(int i=0;i<N;i++){
  15. int x=(int)(Math.random()*1e4);
  16. output.println(x);
  17. }
  18. //记得关闭字符流
  19. if(output!=null){
  20. output.close();
  21. }
  22. System.out.println("--End--");
  23. }
  24.  
  25. }

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. uva146 ID codes

    Description It is 2084 and the year of Big Brother has finally arrived, albeit a century late. In or ...

  2. 百度搜索--jquery

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  3. 对于大量left join 的表查询,可以在关键的 连接节点字段上创建索引。

    对于大量left join 的表查询,可以在关键的 连接节点字段上创建索引. 问题: 大量的left join 怎么优化 select a.id,a.num,b.num,b.pcs,c.num, c. ...

  4. jquery.validate.min.js 用法方法示例

    页面html 代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w ...

  5. sublime快捷键<转>

    写在前面的话:平时做项目中在用eclipse和vs,但是对于一些小项目,感觉没有必要搞那么大的一个工具使用,比如写个小微商城,搞个小脚本了什么,所以就一直在用Sublime Text,界面清新简洁,没 ...

  6. Splay整理

    伸展树(Splay Tree),也叫分裂树,是一种二叉排序树,它能在O(log n)内完成插入.查找和删除操作.(来自百科) 伸展树的操作主要是

  7. netcore web.config ConnectionStrings AppSettings

    new ConfigurationBuilder().Build().GetSection("ConnectionStrings") new ConfigurationBuilde ...

  8. python 测试驱动开发的简单例子

    一.需求分析 需求:一个类 MyClass,有两个功能:add, sub 1.先功能设计 # myclass.py class MyClass(object): # 加法 def add(self): ...

  9. ubuntu mysql 更改IP导致mysql无法启动

    bind-address = 127.0.0.1 => bind-address= 136.129.20.168 IP要这么改 这么改远程连不上,那么需要把这行整行注释掉,重启MYSQL,tel ...

  10. Linux下SVN安装与基本操作

    1.安装svn linux下通过yum安装svn yum -y install subversion 本地Windows系统安装TortoiseSVN 2.配置 建立版本库目录 mkdir /home ...