精华内容
下载资源
问答
  • java如何生成随机数

    万次阅读 多人点赞 2019-04-28 21:14:17
    java生成随机数有两种方法: 1、使用Math方法,Math.random()随机生成一个double类型[0,1),如果想生成1~100的随机数: 如:int num = (int)(Math.random()*100); 2、使用Random方法, Random random = new ...

    java如何生成随机,java生成随机数的两种方式。

    java生成随机数有两种方法:

    1、使用Math方法,Math.random()随机生成一个double类型[0,1),如果想生成1~100的随机数:

    如:int num = (int)(Math.random()*100);
    

    2、使用Random方法生成随机数

    	public static void testRandom() {
            Random random = new Random();
    
            random.setSeed(10000L);
    
            for(int i = 0 ; i < 10 ; i ++) {
                System.out.println(random.nextInt(1000));
            }
            System.out.println("------------------");
            random = new Random();
            random.setSeed(10000L);
            for(int i = 0 ; i < 10 ; i ++) {
                System.out.println(random.nextInt(1000));
            }
    
        }
    

    结果如下:

    208
    572
    116
    475
    500
    574
    641
    166
    727
    670
    ------------------
    208
    572
    116
    475
    500
    574
    641
    166
    727
    670
    

    3、使用SecureRandom生成随机数,代码如下:

    	public static void testSecureRandom() {
            SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
            secureRandom.setSeed(10000L);
            for(int i = 0 ; i < 10 ; i ++) {
                System.out.println(secureRandom.nextInt(1000));
            }
            System.out.println("-------------------");
            secureRandom = new SecureRandom();
            secureRandom.setSeed(10000L);
            for(int i = 0; i < 10 ; i ++) {
                System.out.println(secureRandom.nextInt(1000));
            }
    
        }
    

    结果如下:

    851
    624
    367
    62
    625
    156
    930
    530
    346
    260
    -------------------
    395
    65
    353
    453
    275
    194
    34
    227
    538
    14
    

    4、如何选择使用随机数?

    首先我们知道java.util.Random的实例不是加密安全的,SecureRandom来获取加密安全的伪随机数生成器,以供对安全敏感的应用程序使用。以上二三可以很明显的发现,我要是知道setSeed值(即时间戳),很明显能把随机数给猜出来。所以不建议使用Random。

    5、一些公司随机数选择的案例

    可能某些小公司是让使用Random的,使用Random也可以获取到随机数,但是为了程序的安全性,还是使用SecureRandom比较好。
    现在有好多公司,明文禁止使用java.util.Random。

    6、建议

    想要学习技术、想要了解更多,还是建议去大公司,如果你有实力,觉得自己可以,本人可以帮你内推现在流行的互联网公司(百度、滴滴、小米、头条、美团、阿里、腾讯等)!
    想要去小公司也可以帮你内推哈!如有需要请联系作者

    如何觉得能帮助你,麻烦给作者一份信任,让作者能写下去的理由,不需要你给的太多,只需1块钱即可。

    在这里插入图片描述
    在这里插入图片描述

    如果作者写的有误或者想和作者分享更多,请添加作者微信,邀你进群需收10块钱群费。收钱的目的在于我们来着是学知识的,不是来着观望的

    在这里插入图片描述

    展开全文
  • securerandom.source=file:/dev/random
  • 下文来自: ... -------------------------- package book.number;...* Java实用工具类库中的类java.util.Random提供了产生各种类型随机数的方法。 * 它可以产生int、long、float、do...

    下文来自:

    http://scliu123.iteye.com/blog/506387

    --------------------------

    package book.number;

    import java.util.Random;
    /**
    * Java实用工具类库中的类java.util.Random提供了产生各种类型随机数的方法。
    * 它可以产生int、long、float、double以及Goussian等类型的随机数。
    * java.lang.Math中的方法random()只产生double型的随机数。
    */
    public class RandomNumber {

    public static void main(String[] args) {

    // 使用java.lang.Math的random方法生成随机数
    System.out.println("Math.random(): " + Math.random());

    // 使用不带参数的构造方法构造java.util.Random对象
    System.out.println("使用不带参数的构造方法构造的Random对象:");
    Random rd1 = new Random();
    // 产生各种类型的随机数
    // 按均匀分布产生整数
    System.out.println("int: " + rd1.nextInt());
    // 按均匀分布产生长整数
    System.out.println("long: " + rd1.nextLong());
    // 按均匀分布产生大于等于0,小于1的float数[0, 1)
    System.out.println("float: " + rd1.nextFloat());
    // 按均匀分布产生[0, 1)范围的double数
    System.out.println("double: " + rd1.nextDouble());
    // 按正态分布产生随机数
    System.out.println("Gaussian: " + rd1.nextGaussian());

    // 生成一系列随机数
    System.out.print("随机整数序列:");
    for (int i = 0; i < 5; i++) {
    System.out.print(rd1.nextInt() + " ");
    }
    System.out.println();

    // 指定随机数产生的范围
    System.out.print("[0,10)范围内随机整数序列: ");
    for (int i = 0; i < 10; i++) {
    // Random的nextInt(int n)方法返回一个[0, n)范围内的随机数
    System.out.print(rd1.nextInt(10) + " ");
    }
    System.out.println();
    System.out.print("[5,23)范围内随机整数序列: ");
    for (int i = 0; i < 10; i++) {
    // 因为nextInt(int n)方法的范围是从0开始的,
    // 所以需要把区间[5,28)转换成5 + [0, 23)。
    System.out.print(5 + rd1.nextInt(23) + " ");
    }
    System.out.println();
    System.out.print("利用nextFloat()生成[0,99)范围内的随机整数序列: ");
    for (int i = 0; i < 10; i++) {
    System.out.print((int) (rd1.nextFloat() * 100) + " ");
    }
    System.out.println();
    System.out.println();

    // 使用带参数的构造方法构造Random对象
    // 构造函数的参数是long类型,是生成随机数的种子。
    System.out.println("使用带参数的构造方法构造的Random对象:");
    Random ran2 = new Random(10);
    // 对于种子相同的Random对象,生成的随机数序列是一样的。
    System.out.println("使用种子为10的Random对象生成[0,10)内随机整数序列: ");
    for (int i = 0; i < 10; i++) {
    System.out.print(ran2.nextInt(10) + " ");
    }
    System.out.println();
    Random ran3 = new Random(10);
    System.out.println("使用另一个种子为10的Random对象生成[0,10)内随机整数序列: ");
    for (int i = 0; i < 10; i++) {
    System.out.print(ran3.nextInt(10) + " ");
    }
    System.out.println();
    // ran2和ran3生成的随机数序列是一样的,如果使用两个没带参数构造函数生成的Random对象,
    // 则不会出现这种情况,这是因为在没带参数构造函数生成的Random对象的种子缺省是当前系统时间的毫秒数。

    // 另外,直接使用Random无法避免生成重复的数字,如果需要生成不重复的随机数序列,需要借助数组和集合类
    //本书第4章将给出解决方法。
    }
    }


    展开全文
  • Java如何生成随机数的三种方法

    千次阅读 2019-09-12 10:05:49
    Java如何生成随机数?本篇文章就给大家介绍在Java中生成随机数的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 在Java中提供了三种使用一些内置方法和类生成随机数的方法,如下所示: ...

    Java中如何生成随机数?本篇文章就给大家介绍在Java中生成随机数的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。
    在Java中提供了三种使用一些内置方法和类生成随机数的方法,如下所示:

    1、java.util.Random类

    2、Math.random方法:可以生成double类型的随机数。

    3、ThreadLocalRandom类

    下面我们就来看看具体Java是如何实现随机数的生成。

    1、java.util.Random类

    Java 实用工具类库中的类:java.util.Random 提供了产生各种类型随机数的方法。

    要使用java.util.Random类生成随机数,我们必须首先创建此类的实例,然后使用该实例调用nextInt(),nextDouble(),nextLong()等方法。

    我们可以使用java.util.Random类随机生成:整数,浮点数,双精度数,长整数,布尔运算数等类型的随机数。

    我们可以将参数传递给方法,以便在要生成的数字范围上放置上限。例如,nextInt(6)将生成0到5(包括0和5)范围内的数字。

    // 随机数生成

    // 使用java.util.Random;

    import java.util.Random;

    public class generateRandom{

    public static void main(String args[]) 
    
    { 
    
        // 创建随机类的实例
    
        Random rand = new Random(); 
    
    
    
        // 在0到999范围内生成随机整数
    
        int rand_int1 = rand.nextInt(1000); 
    
        int rand_int2 = rand.nextInt(1000); 
    
    
    
        // 输出随机整数
    
        System.out.println("随机整数: "+rand_int1); 
    
        System.out.println("随机整数: "+rand_int2); 
    
    
    
        // 生成随机双精度数
    
        double rand_dub1 = rand.nextDouble(); 
    
        double rand_dub2 = rand.nextDouble(); 
    
    
    
        // 输出随机双精度数
    
        System.out.println("随机双精度数: "+rand_dub1); 
    
        System.out.println("随机双精度数: "+rand_dub2); 
    
    } 
    

    }

    2、Math.random方法

    Math类包含用于执行各种数值运算的各种方法,例如计算取幂,对数等。这其中的一个方法:random(),可以返回带有正号的double数,值大于或等于0.0且小于1.0 ,即取值范围是[0.0,1.0)的左闭右开区间。

    random()方法返回的值是伪随机选择的,在[0.0,1.0)的范围内(近似)均匀分布。

    注:它只能生成double类型的随机数。

    下面我们就通过java代码介绍如何使用此方法产生随机数:

    // Math.random() 生成随机数

    import java.util.*;

    public class generateRandom

    {

    public static void main(String args[]) 
    
    { 
    
        // 随机双精度数的生成
    
        System.out.println("随机双精度数: " + Math.random()); 
    
        System.out.println("随机双精度数: " + Math.random()); 
    
    } 
    

    }

    3、java.util.concurrent.ThreadLocalRandom类

    ThreadLocalRandom类是在java 1.7中引入的,提供并发产生随机数,能够解决多个线程发生的竞争争夺。可以生成整数,双精度,布尔等类型的随机数。

    ThreadLocalRandom的主要实现细节:

    1)、使用一个普通的long而不是使用Random中的AtomicLong作为seed

    2)、不能自己创建ThreadLocalRandom实例,因为它的构造函数是私有的,我们可以使用它的静态方法ThreadLocalRandom.current()

    3)、它是CPU缓存感知式的,使用8个long虚拟域来填充64位L1高速缓存行

    下面我们就通过简单的java代码介绍如何使用这个类生成随机数:

    // 随机数的产生

    // 使用java.util.concurrent.ThreadLocalRandom类

    import java.util.concurrent.ThreadLocalRandom;

    public class generateRandom

    {

    public static void main(String args[]) 
    
    { 
    
        // 在0到999范围内生成随机整数
    
        int rand_int1 = ThreadLocalRandom.current().nextInt(); 
    
        int rand_int2 = ThreadLocalRandom.current().nextInt(); 
    
    
    
        // 输出随机整数
    
        System.out.println("Random Integers: " + rand_int1); 
    
        System.out.println("Random Integers: " + rand_int2); 
    
    
    
        // 生成随机双精度数
    
        double rand_dub1 = ThreadLocalRandom.current().nextDouble(); 
    
        double rand_dub2 = ThreadLocalRandom.current().nextDouble(); 
    
    
    
        // 输出随机双精度数
    
        System.out.println("Random Doubles: " + rand_dub1); 
    
        System.out.println("Random Doubles: " + rand_dub2); 
    
    
    
        // 生成随机布尔值
    
        boolean rand_bool1 = ThreadLocalRandom.current().nextBoolean(); 
    
        boolean rand_bool2 = ThreadLocalRandom.current().nextBoolean(); 
    
    
    
        // 输出随机布尔值
    
        System.out.println("Random Booleans: " + rand_bool1); 
    
        System.out.println("Random Booleans: " + rand_bool2); 
    
    } 
    

    }

    展开全文
  • Java如何生成随机数

    2018-10-24 22:45:00
    Java中提供了一个获取随机数的一... 生成随机数要使用Math类下的方法:random() 方法的返回值是[0.0 - 1.0)  1.获取上述范围内的随机数:  double d = Math.random();      注:上述式子若写成下面这样,...

      Java中提供了一个获取随机数的一个类(Math)

      Math:此类在java.lang包下,jvm会自动导入,所以无需import导包

      生成随机数要使用Math类下的方法:random()  方法的返回值是[0.0 - 1.0)

      1.获取上述范围内的随机数:

      double d = Math.random();

      

      

      注:上述式子若写成下面这样,那么i的值只会是0;因为Math.random()生成的随机数范围为[0.0 - 1.0),此时无论随机数为何值转为int时值只会是0

      int i = (int)(Math.random());

      

      

      2.获取一个1~100之间的随机数(int型)

      int num = (int)(Math.random()*100+1);

      

      

      3.获取一个任意范围(n~m)之间的随机整数(int型)

      int num = (int)(Math.random()*(m-n+1)+m);

      注:一定要大数减去小数

      例:

      

      

    转载于:https://www.cnblogs.com/cc-ccblog/p/9846761.html

    展开全文
  • java如何生成随机数

    2015-02-06 09:03:01
    java为我们生成随机数提供了两种方式:一种是类Math,一种是类Random。
  • java如何生成随机数

    千次阅读 2013-07-31 11:39:49
    java如何生成随机数? package com.test.util; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random; public class CharacterUtils { /** * 第一种方法;...
  • java random生成随机数

    2019-09-15 16:06:45
    如何随机生成 1~100 之间的随机数,取值包含边界值 1 和 100。 或者是: 如何随机生成随机的3位整数? 等等…… 以 Java 语言为例,我们观察其 Random 对象的 nextInt(int) 方法,发现这个方法...
  • java生成随机数

    2013-08-22 21:29:26
    java生成随机数一般有两种方式: 一、Math.random() 随即生成0 实例:如何写,生成随机生成出0~100中的其中一个数呢?  Math.random()返回的只是从0到1之间的小数,如果要50到100,就先放大50倍,即0到50之间,...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 377
精华内容 150
关键字:

java如何生成随机数

java 订阅