精华内容
下载资源
问答
  • Java中产生随机数的方法总结
    2017-10-23 08:35:23

    方法一、Math类有个random方法可以实现随机数的生成。
    Math.random()返回的是:返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
    在此基础上我们修改下就能得到一定范围的随机数:
    (int)(Math.random()*10)返回0到9的随机正整数;
    (int)(Math.random()*n) 返回0到n-1的随机正整数;
    (int)(Math.random()*100)+1 返回1到100之间的随机正整数;
    方法二、Java中Random类提供了产生随机数的方法
    由于产生随机数的方法不是类方法,所以需要先实例化一个对象,由对象进行方法的调用;
    Random random=new Random();
    random.nextInt();返回的是int型的随机正整数;
    random.nextInt(10);返回的是0到9范围的随机正整数;
    random.nextInt(100)+1;返回1到100之间的随机正整数;
    random.nextInt(n)+m;就返回m到m+n-1之间的随机正整数;
    还有其它的方法,但是没这两个方法这么简单直接;后续可能会补充。

    更多相关内容
  • 一、java产生随机数的几种方式1.在j2se里可以使用Math.random()方法来产生一个随机数,所产生的随机数是0-1之间的一个double,可以把他乘以一定的数,比如说乘以100,他就是个100以内的随机数,这...

    在我们的日常学习与生活中,java编程语言的应用渗透的很深,对我们益处颇大。今天就来为大家介绍一些java的基础知识,java中产生随机数有哪几种方式以及怎么得到它,一起来看看吧。

    一、java产生随机数的几种方式

    1.在j2se里可以使用Math.random()方法来产生一个随机数,所产生的随机数是0-1之间的一个double,可以把他乘以一定的数,比如说乘以100,他就是个100以内的随机数,这个在j2me中没有。

    2.在java.util这个包里面提供了一个Random的类,可以新建一个Random的对象来产生随机数,从而可以产生随机整数、随机float、随机double,随机long,这种方法也是在j2me的程序里经常使用的一种取随机数的方法。

    3.在System类中有一个currentTimeMillis()方法,这个方法返回一个从1970年1月1号0点0分0秒到目前的一个毫秒数,返回类型是long,可以将它作为一个随机数,用它对一些数取模,然后就可以把他限制在一个范围之内。

    其实在Random的默认构造方法里也是使用上面第三种方法进行随机数的产生的。

    二、得到随机数方法的实例展示

    方式1:(数据类型)(最小值+Math.random()*(最大值-最小值+1))。

    比如说,代码如下:(int)(1 + Math.random() * (10 - 1 + 1))

    从1到10的int型随数;

    方法2,获得随机数,代码如下:for (int i = 0; i 

    {

    System.out.println((int)(1 + Math.random() * 10));

    }

    (int)(1 + Math.random() * 10)

    通过java.Math包的random方法得到1-10的int随机数;

    它的公式是:最小值-最大值(整数)的随机数

    (类型)最小值+Math.random()*最大值

    方法3,代码如下:Random ra = new Random();

    for (int i = 0; i 

    {

    System.out.println(ra.nextInt(10) + 1);

    }

    1.通过java.util包中的Random类的nextInt方法来得到1-10的int随机数

    2.生成0到1之间的任意随机小数;

    3.生成[0,d)区间的随机小数,d为任意正的小数,则只需要将nextDouble方法的返回值乘以d即可。[n1,n2]

    4.也就是ra.nextDouble() *(n2-n1)+n1

    以上就是关于java中产生随机数有哪几种方式以及怎么得到它的详细解析。如果你对java知识感兴趣,想要了解更多java基础以及常见问题,敬请关注奇Q工具网。

    推荐阅读:

    展开全文
  • Java生成随机数我总共总结了5种方式: (一)Math.random()静态方法: 产生随机数是0-1之间的一个double,0<=random<=1 使用: for(int i=0;i<10;i++) { System.out.println(Math.println()); } 实现...

    Java生成随机数我总共总结了5种方式:

    (一)Math.random()静态方法:

    产生的随机数是0-1之间的一个double,0<=random<=1
    使用:

    for(int i=0;i<10;i++)
    {
    System.out.println(Math.println());
    }
    实现原理:
    When this method is frist called, it creates a single new pseudorandom-number
    generator, exactly as if by the expression new java.util.Random(). This new pseudora-
    -ndom-number generator is used thereafter for all calls to this method and is used
    nowhere else.This method is properly synchronized to allow correct use by more than
    one thread. However, if many threads need to generate pseudorandom numbers at a great
    rate, it may reduce contention for each thread to have its own pseudorandom-number
    generator.
    当第一次调用 Math.random() 方法时,自动创建了一个伪随机数生成器,实际上用的是 new java.util.Random()。
    当接下来继续调用 Math.random() 方法时,就会使用这个新的伪随机数生成器。initRNG() 方法是 synchronized
    的,因此在多线程情况下,只有一个线程会负责创建伪随机数生成器(使用当前时间作为种子),其他线程则利用该伪随机
    数生成器产生随机数。

    (二)java.util.Random工具类:

    基本算法:linear congruential pseudorandom number generator (LGC) 线性同余法伪随机数生成器缺点:可
    预测。An attacker will simply compute the seed from the output values observed. This takes
    significantly less time than 2^48 in the case of java.util.Random. 从输出中可以很容易计算出种子值。
    It is shown that you can predict future Random outputs observing only two(!) output values in
    -ime roughly 2^16. 因此可以预测出下一个输出的随机数。You should never use an LCG for security-crit-
    cal purposes.在注重信息安全的应用中,不要使用 LCG 算法生成随机数,请使用 SecureRandom。
    使用:
    Random random = new Random();
    for (int i = 0; i < 5; i++) {
    System.out.println(random.nextInt());
    }
    Random类提供的方法:API

    nextBoolean() - 返回均匀分布的 true 或者 false
    nextBytes(byte[] bytes)
    nextDouble() - 返回 0.0 到 1.0 之间的均匀分布的 double
    nextFloat() - 返回 0.0 到 1.0 之间的均匀分布的 float
    nextGaussian()- 返回 0.0 到 1.0 之间的高斯分布(即正态分布)的 double
    nextInt() - 返回均匀分布的 int
    nextInt(int n) - 返回 0 到 n 之间的均匀分布的 int (包括 0,不包括 n)
    nextLong() - 返回均匀分布的 long
    setSeed(long seed) - 设置种子
    

    (三)java.util.concurrent.ThreadLocalRandom工具类

    ThreadLocalRandom是JDK7之后提供,也是继承至java.util.Random。每一个线程有一个独立的随机数生成器,用于开发生
    成随机数,能够解决多个线程发生的竞争争夺,效率更高。
    使用:
    public class JavaRandom {
    public static void main(String args[]) {
    new MyThread().start();
    new MyThread().start();
    }
    }
    class MyThread extends Thread {
    public void run() {
    for (int i = 0; i < 2; i++) {
    System.out.println(Thread.currentThread().getName() + ": " + ThreadLocalRandom.current().nextDouble());
    }
    }
    }

    (四)java.Security.SecureRandom:

    这个也是继承自java.util.Random。SecureRandom提供加密的强随机生成器(RNG),要求种子必须是不可预知的,产生非确
    定性输出。SecureRandom也提供了与实现无关的算法,因此,调用方(应用程序代码)会请求特定的RNG 算法并将它传回到算法
    的SecureRandom对象中。如果仅指定算法名称,如下所示:SecureRandom random = SecureRandom.getInstance(“SHA1PRNG”);
    如果既指定了算法名称又指定了包提供程序,如下所示:SecureRandom random = SecureRandom.getInstance(“SHA1PRNG”, “SUN”);
    使用:
    SecureRandom random1 = SecureRandom.getInstance(“SHA1PRNG”);
    SecureRandom random2 = SecureRandom.getInstance(“SHA1PRNG”);
    for (int i = 0; i < 5; i++) {
    System.out.println(random1.nextInt() + " != " + random2.nextInt());
    };

    (五)随机字符串:

    可以使用Apache Commons-Lang包中的RandoStringUtils类。Maven依赖如下:

    commons-lang
    commons-lang
    2.6

    使用:
    public class RandomStringDemo {
    public static void main(String[] args) {
    // Creates a 64 chars length random string of number.
    String result = RandomStringUtils.random(64, false, true);
    System.out.println("random = " + result);
    // Creates a 64 chars length of random alphabetic string.
    result = RandomStringUtils.randomAlphabetic(64);
    System.out.println("random = " + result);
    // Creates a 32 chars length of random ascii string.
    result = RandomStringUtils.randomAscii(32);
    System.out.println("random = " + result);
    // Creates a 32 chars length of string from the defined array of
    // characters including numeric and alphabetic characters.
    result = RandomStringUtils.random(32, 0, 20, true, true, “qw32rfHIJk9iQ8Ud7h0X”.toCharArray());
    System.out.println("random = " + result);
    }
    }`

    展开全文
  • Java中产生随机数的两个方法,有数字随机,字符随机,和指定部分随机等代码概要
  • Java 提供了很多的方法能够产生随机数,在本文中将持续进行总结相应的方法和应用,对于初学者来说较为友好,同时附了简单的案例供大家参考。


    前言

    在 Java 中提供了很多的方法能够产生随机数,在本文中将持续进行总结相应的方法和应用,对于初学者来说较为友好,同时附了简单的案例供大家参考。

    在这里插入图片描述


    一、System.currentTimeMillis() 方法

    1.1、System.currentTimeMillis() 方法原理剖析

    根据 API 的介绍,调用 System.currentTimeMillis() 方法我们可以获取 1970 年 1 月 1 日午夜到现在的毫秒数(例如:1203183086328 毫秒)。

    我们可以通过取余的方式得到其最后一位的整数,代码如下:

    int number1 = (int)(System.currentTimeMillis() % 10);
    

    1.2、实现随机数加法程序

    利用 System.currentTimeMillis() 方法实现通过程序产生随机数让一年级学生练习加法,例题如下。

    程序随机产生两个一位整数,number1 和 number2,然后显示“What is 1 + 7?”

    实现代码如下:

    package program3_1;
    
    import java.util.Scanner;
    
    public class AdditionQuiz {
    	public static void main(String[] args) {
    		int number1 = (int)(System.currentTimeMillis() % 10);
    		int number2 = (int)(System.currentTimeMillis() / 7 % 10);
    		Scanner input = new Scanner(System.in);
    		System.out.print("What is " + number1 + " + " + number2 + " ?");
    		int answer = input.nextInt();
    		System.out.println(number1 + " + " + number2 + " = " + answer + " is " + (number1 + number2 == answer));
    	}
    }
    

    实现具体如下图所示:

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

    二、Math.random() 方法

    2.1、Math.random() 方法原理剖析

    使用 Math.random() 来获得一个 0.0 到 1.0 之间的随机 double 值,不包括 1.0

    通过 (int)(Math.random() * 10) 会返回一个随机的一位整数(即 0 到 9 之间的数),代码如下:

    int number1 = (int)(Math.random() * 10);
    

    2.2、实现随机数减法程序

    利用 Math.random() 方法实现一个让一年级学生练习减法的程序,例题如下。

    程序随机产生两个一位整数 number1 和 number2,且满足 number >= number2。显示问题:“What is 9 - 2 ?”学生输入答案后,显示消息判断是否正确。

    实现代码如下:

    package com.bailu.test;
    
    import java.util.Scanner;
    
    public class AdditionQuiz {
    	public static void main(String[] args) {
    		int number1 = (int) (Math.random() * 10);
    		int number2 = (int) (Math.random() * 10);
    		if (number2 > number1) {
    			int temp = number1;
    			number1 = number2;
    			number2 = temp;
    		}
    		System.out.print("What is " + number1 + " - " + number2 + " ? ");
    		Scanner input = new Scanner(System.in);
    		int answer = input.nextInt();
    		input.close();
    		if (number1 - number2 == answer) {
    			System.out.println("You are right!");
    		} else {
    			System.out.println("You are wrong!");
    			System.out.println(number1 + " - " + number2 + " = " + (number1 - number2));
    		}
    	}
    }
    

    实现具体如下图所示:

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


    总结

    本文给大家介绍了两种产生随机数的方法,这是最简单的两种。日后有机会我还会继续补充更多的方法,另外大家还有什么方法呢?补充到下面吧!

    在这里插入图片描述


    我是白鹿,一个不懈奋斗的程序猿。望本文能对你有所裨益,欢迎大家的一键三连!若有其他问题、建议或者补充可以留言在文章下方,感谢大家的支持!

    展开全文
  • Java实现按权重随机数

    2020-09-03 18:23:00
    主要介绍了Java实现按权重随机数,本文给出了提出问题、分析问题、解决问题三个步骤,需要的朋友可以参考下
  • 文章目录前言一、调用 System.currentTimeMillis() 方法1.1、原理剖析1.2、随机数加法程序二、使用 Math.random() 方法2.1、原理剖析2.2、随机数减法程序总结前言在 Java 提供了很多的方法能够产生随机数。...
  • 在j2se我们可以使用Math.random()...在java.util这个包里面提供了一个Random的类,我们可以新建一个Random的对象来产生随机数,他可以生产随机整数、随机float、随机double、随机long,这个也是我们在j2me的程序里...
  • 通过这个方法可以让系统产生随机数。不过默认情况下,其产生的随机数范围比较小,为大于等于0到小于1的double型随机数。虽然其随机数产生的范围比较小,不能够满足日常的需求。如日常工作可能需要产生整数的随机数...
  • java中产生随机数两个方法

    千次阅读 2019-12-25 09:07:55
    方法一、Math类有个random方法可以实现随机数的生成。Math.random()返回的是:返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。在此基础上我们修改下就能得到一定范围的随机数: (int)(Math.random()*10)...
  • Java中产生随机数

    2017-03-09 10:59:07
     通过这个方法可以让系统产生随机数。不过默认情况下,其产生的随机数范围比较小,为大于等于0到小于1的 double型随机数。虽然其随机数产生的范围比较小,不能够满足日常的需求。如日常工作可能需要产生整数的...
  • Java中如何产生随机数

    2021-03-16 15:06:31
    以我对Java API的了解(当然是很不全面)。...1.Math.random()public static double random()//产生从0.0至1.0的随机数,较常用如果我们要产生一个整型的随机数,当然也是可行的,通过强制类型转换...
  • 这个产生随机数是0-1之间的636f70793231313335323631343130323136353331333365633965一个double,我们可以把他乘以一定的数,比如说乘以100,他就是个100以内的随机,这个在j2me没有。在java.util这个包里面提供...
  • java中,我们可以通过两种方式来获取随机数(generating a random number)一种是大家熟悉的java.lang.Math.Random()静态方法,另一种是创建java.util.Random对象。本文介绍了两种方法的使用过程。
  • java中有时候需要用到随机数,所以就把产生随机数的方法总结一下。 1.Math类有个静态方法random,Math.random()返回的是[0,1)之间的 double 类型的值,有时候用到了变形: (int)(Math.random()*n) 返回0到n-1的...
  • import java.util.Random; //生成随机数 调用的是系统的方法 public class random { public static void main(String args[]) { Random random=new Random(5); for(int i=0;i<10;i++) { System.out....
  • java如何产生一个随机数

    千次阅读 2022-04-04 18:04:16
    java中可以用Random来产生一个随机数 Random使用步奏 第一步.导入Random的包 import java.util.Random; 第二步.创建一个随机数对象 Random r=new Random(); 第三步.接受数据 int a =r.nextInt()
  • Math.random()默认产生大于等于0.0且小于1.0之间的随机double型随机数(返回[0,1)随机数)。 如果我们要随机产生一个int型的两位数[10,99]。 (int)(Math.random()*90+10) 因为要产生10-99 所以x90 得到的是 [0,90)再...
  • Java中随机数生成方法

    万次阅读 多人点赞 2019-05-08 09:39:15
    概述:本文章共整理Java中常用的三种随机数生成的方法,Math.random() , Random类,以及System.currentTimeMillis()
  • java-随机数生成

    2020-12-22 03:52:30
    Java随机数生成 随机数有三种生成方式 1.通过Math.random()方法 2.通过System.currentTimeMillis()方法获取毫秒数, 3.通过Random类 ——————————————————————使用开发工具MyEclipse10 第一种:...
  • * 产生随机数; * @author 小仙女 * */ public class 掷骰子 { public static void main(String[] args) { //随机数Dot; //Math.random()可以取0~1之间的任意数; double Dot=6*Math.random()+1; //...
  • Java产生随机数代码 Java产生随机数代码
  • java如何产生随机数

    千次阅读 2021-02-12 14:51:07
    一、java如何产生随机数?1.打开eclipse2.新建java项目,例如取名为“suijishu”点击完成3.新建一个类进行测试4.首先要在头部插入一个包输入import java.util.Random;5.输入代码:public static int suiji = new ...
  • 产生0或1的随机数

    2017-10-12 16:20:43
    产生0或1的随机数产生0或1的随机数产生0或1的随机数产生0或1的随机数产生0或1的随机数产生0或1的随机数产生0或1的随机数产生0或1的随机数产生0或1的随机数产生0或1的随机数产生0或1的随机数产生0或1的随机数产生0或1...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 62,181
精华内容 24,872
关键字:

java中产生随机数

java 订阅