zoukankan      html  css  js  c++  java
  • Java产生随机数

    前言:

      每一门程序设计语言基本都具有一个随机函数,而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 }



  • 相关阅读:
    Tomcat6.0的Thisisverylikelytocreateamemoryleak异常
    一个不错的能将HTML表格导出为excel,pdf等的jquery插件
    关于tomcat8在windows2008下高并发下问题的解决方案
    应用部署到JBOSS上遇到的问题
    [置顶] 将项目从tomcat 迁移到JBoss
    struts2 if标签示例
    用Java集合中的Collections.sort方法对list排序的两种方法
    SAP 关于标准成本、计划成本、目标成本、实际成本
    “癌症村”里的“净水神器”
    iis虚拟目录引发的路径问题
  • 原文地址:https://www.cnblogs.com/SeaSky0606/p/4716195.html
Copyright © 2011-2022 走看看