java的三种随机数生成方式的实现方法

随机数的产生在一些代码中很常用,也是我们必须要掌握的。而java中产生随机数的方法主要有三种:

  • 第一种:new Random()
  • 第二种:Math.random()
  • 第三种:currentTimeMillis()

第一种需要借助java.util.Random类来产生一个随机数发生器,也是最常用的一种,构造函数有两个,Random()和Random(long seed)。第一个就是以当前时间为默认种子,第二个是以指定的种子值进行。产生之后,借助不同的语句产生不同类型的数。

种子就是产生随机数的第一次使用值,机制是通过一个函数,将这个种子的值转化为随机数空间中的某一个点上,并且产生的随机数均匀的散布在空间中。以后产生的随机数都与前一个随机数有关。以代码为例。

public static void main(String[] args)
{
  Random r = new Random(1);
  for(int i=0 ; i<5 ; i++)
  {
    int ran1 = r.nextInt(100);
    System.out.println(ran1);
  }
}

在我的编译器下产生的五个数均为85,88,47,13,54,如果采用Random r = new Random(),产生的随机数就不同,这就是确定种子导致的结果。

而第二种方法返回的数值是[0.0,1.0)的double型数值,由于double类数的精度很高,可以在一定程度下看做随机数,借助(int)来进行类型转换就可以得到整数随机数了,代码如下。

public static void main(String[] args)
 {
  int max=100,min=1;
   int ran2 = (int) (Math.random()*(max-min)+min);
   System.out.println(ran2);
 }

至于第三种方法虽然不常用,但是也是一种思路。方法返回从1970年1月1日0时0分0秒(这与UNIX系统有关)到现在的一个long型的毫秒数,取模之后即可得到所需范围内的随机数。

public static void main(String[] args)
{
int max=100,min=1;
long randomNum = System.currentTimeMillis();
int ran3 = (int) (randomNum%(max-min)+min);
System.out.println(ran3);

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java生成抽样随机数的多种算法

    本章先讲解Java随机数的几种产生方式,然后通过示例对其进行演示. 概述: 这里你是不是会说,生成随机数有什么难的?不就是直接使用Java封装好了的random就行了么?当然对于一般情况下是OK的,而且本文要说明的这些算法也是基于这个random库函数的. 本文主要是针对抽样这一行为进行的,而抽样本身有一个隐含的规则就是不要有重复数据.好了,有了这些说明.你可以先尝试着用一些自己的想法来实现不重复地生成随机数. 算法尝试: 一些好的算法出现,往往伴随着一些不那么好的算法.但是对于效果不太好的算法

  • java生成随机数的常用方法分析

    本文实例讲述了java生成随机数的常用方法.分享给大家供大家参考,具体如下: 前因: 经常性的,测试一些功能时都需要造一些假数据,每次都上网来查一下怎么生成随机数.这回我把查到的方法自己整理一下,下次在用不用到处找了. 生成随机数的几种方法: 1. 使用Math.random()生成随机数 直接贴几个小方法 /** * 获取0.0-1.0之间的随机小数 */ private double test1() { double num = Math.random(); return num; } /*

  • Java编程实现生成给定范围内不重复随机数的方法小结

    本文实例总结了Java编程实现生成给定范围内不重复随机数的方法.分享给大家供大家参考,具体如下: 在Java中的Math类中存在一个random()方法,该方法默认生成0.0到1.0之间的double型随机数:经过稍微处理,就可以产生我们需要的随机数以及随机字符. 除了Math类中的random()方法之外,java.util.Random类也可以用来生成随机数:下面分别举例(用不同的方法生成双色球号码)说明: 1. Math.random()方法 生成随机数: package test; im

  • 史上最全的java随机数生成算法分享

    复制代码 代码如下: String password = RandomUtil.generateString(10); 源码如下: 复制代码 代码如下: package com.javaniu.core.util;import java.util.Random;public class RandomUtil { public static final String ALLCHAR = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRS

  • Java生成随机数的2种示例方法代码

    我们现在做个例子,比如生成20个0到10之间的随机数. 1.使用Random类的nextInt(n)方法,n代表0到n之间,包括0,不包括n 复制代码 代码如下: Random random = new Random();for(int i=0;i<20;i++){ System.out.println(random.nextInt(10));} 2.使用Math类中的random方法,它生成的随机数是0.0到1.0之间的double.要生成int就需要类型转换 复制代码 代码如下: for(i

  • Java中生成随机数的实现方法总结

    在实际开发工作中经常需要用到随机数.如有些系统中创建用户后会给用户一个随机的初始化密码.这个密码由于是随机的,为此往往只有用户自己知道.他们获取了这个随机密码之后,需要马上去系统中更改.这就是利用随机数的原理.总之随机数在日常开发工作中经常用到.而不同的开发语言产生随机数的方法以及技巧各不相同.笔者这里就以Java语言为例,谈谈随机数生成的方法以及一些技巧. 一.利用random方法来生成随机数. 在Java语言中生成随机数相对来说比较简单,因为有一个现成的方法可以使用.在Math类中,Java

  • JAVA 根据设置的概率生成随机数的方法

    本文介绍了JAVA 根据设置的概率生成随机数的方法,分享给大家 import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; public class RandomTest { // String 可以为任意类型 也可以自定义类型 static Map<String, Integer> keyChanceMap

  • java生成指定范围随机数的多种代码

    生成指定范围内的随机数这个是最常用的技术之一,程序员希望通过随机数的方式来处理众多的业务逻辑,测试过程中也希望通过随机数的方式生成包含大量数字的测试用例. 问题往往类似于: 如何随机生成 1~100 之间的随机数,取值包含边界值 1 和 100. 或者是: 如何随机生成随机的3位整数? 等等-- 以 Java 语言为例,我们观察其 Random 对象的 nextInt(int) 方法,发现这个方法将生成 0 ~ 参数之间随机取值的整数.例如(假设先有 Random rand = newRando

  • 如何用java生成指定范围的随机数

    要生成在[min,max]之间的随机整数, package edu.sjtu.erplab.io; import java.util.Random; public class RandomTest { public static void main(String[] args) { int max=20; int min=10; Random random = new Random(); int s = random.nextInt(max)%(max-min+1) + min; System.

  • java生成随机数(字符串)示例分享

    用来生成简单的随机java生成随机数,大小+数字.没特符 复制代码 代码如下: package passwords;import java.util.Random;public class pwdGen { private Random rdseed=new Random(); /**  *@param  *length  password length;  *@param  *letters  boolean non-capital letters combination control; 

  • Java编程中随机数的生成方式总结

    本章先讲解Java随机数的几种产生方式,然后通过示例对其进行演示. 广义上讲,Java中的随机数的有三种产生方式: (01). 通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字. (02). 通过Math.random()返回一个0到1之间的double值. (03). 通过Random类来产生一个随机数,这个是专业的Random工具类,功能强大.第1种 利用System.currentTimeMillis()获取随机数 通过System.curr

随机推荐