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

本文实例讲述了java生成随机数的常用方法。分享给大家供大家参考,具体如下:

前因:

经常性的,测试一些功能时都需要造一些假数据,每次都上网来查一下怎么生成随机数。这回我把查到的方法自己整理一下,下次在用不用到处找了。

生成随机数的几种方法:

1. 使用Math.random()生成随机数

直接贴几个小方法

/**
* 获取0.0-1.0之间的随机小数
*/
private double test1() {
    double num = Math.random();
    return num;
}
/**
* 获取两个数之间的随机小数
*/
private double test2(int min, int max) {
    return min + Math.random() * (max - min);
}
/**
* 获取两个数之间的随机整数
*/
private int test3(int min, int max) {
    return (int) (min + Math.random() * (max - min));
}

2. 使用java.util.Random类生成随机数

简单介绍类中的几个方法

方法:

public int nextInt() :随机生成一个int型数值
public int nextInt(int n) :随机生成一个 >=0 并且 <n 的int型数值,要求n>0
public long nextLong() :随机生成一个long型数值
public float nextFloat()  :随机生成一个float型数值
public double nextDouble()  :随机生成一个double型数值
public double nextGaussian()   :随机生成一个符合正态分布的double型数值,数值基本在0左右摇摆,有人做了200万次循环,验证了值在-6~6之间
public boolean nextBoolean()   :随机生成一个boolean类型的值

构造:

public Random()
public Random(long seed)

问:seed是干嘛用的?

seed 是 Random 生成随机数时使用的参数。
无参构造函数每次都使用当前时间作为种子,随机性更强。
而含参的构造函数其实是伪随机,更有可预见性。

3. 使用System.currentTimeMillis()取模

比如想取1000以内的随机数,就System.currentTimeMillis()%1000

PS:这里再为大家提供几款功能类似的在线工具供大家参考:

在线随机数字/字符串生成工具:
http://tools.jb51.net/aideddesign/suijishu

在线随机字符/随机密码生成工具:
http://tools.jb51.net/aideddesign/rnd_password

高强度密码生成器:
http://tools.jb51.net/password/CreateStrongPassword

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java字符与字符串操作技巧总结》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

(0)

相关推荐

  • Java实现按权重随机数

    一.问题定义: 问下有一个数组,这些数组中的值都有自己的权重,怎样设计才能高效的优先取出权重高的数?? 例如: 复制代码 代码如下: 权重: 8  2  11  79 权重返回的值: 0  1  2   3 二.分析问题: 思路一:创建一个数组数组大小为权重和的大小,如值0的权重是8,则放入8个0值,值1的权重是2,则放入2个1值,依次类推. 然后用用一个权重和大小的随机数,产生随机数,即可.缺点要占用过多的内存. 思路二: 权重和数组 w[i]存储的是[0,i]元素的所有元素的权重和  时间复

  • 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语言为例,谈谈随机数生成的方法以及一些技巧. 一.利用random方法来生成随机数. 在Java语言中生成随机数相对来说比较简单,因为有一个现成的方法可以使用.在Math类中,Java

  • Java生成10个1000以内的随机数并用消息框显示数组内容然后求和输出

    本文最终结果大概是这样的,使用java技术随机生成10个数,然后填充一个数组并在消息框中显示数组内容,接着对数组求和输出,将结果显示在消息框中. 设计思路:可以先用Math.Random()*1000生成1000以内随机数,然后依次存入数组中,然后读取数组,输出随机数,同时进行加法计算,最后将所有结果以消息框形式输出. 程序流程图: 源代码: package 随机数求和; import javax.swing.*; public class Sum { public static void ma

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

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

  • JAVA获得包含0-9、a-z、A-Z范围内字符串的的随机数实例

    一.获得0-9,a-z,A-Z范围的随机字符串 复制代码 代码如下: /** * JAVA获得0-9,a-z,A-Z范围的随机数 * @param length 随机数长度 * @return String */ public static String getRandomChar(int length) { char[] chr = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f',

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

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

  • 史上最全的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中随机数的产生方式与原理详解

    Java中随机数的产生方式与原理 查阅随机数相关资料,特做整理 首先说一下java中产生随机数的几种方式 在j2se中我们可以使用Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double,我们可以把他乘以100,他就是个100以内的随机数字,这个在j2me中没有. 在java.util这个包里面提供了一个Random的类,我们可以新建一个Random的对象来产生随机数,他可以生产随机整数.随机float.随机double.随机long,这个也是我们在j2me

  • java 实现随机数组输出及求和实例详解

    java 实现随机数组输出及求和 问题描述: 随机生成10个数,填充一个数组,然后用消息框显示数组内容,接着计算数组元素的和,将结果也显示在消息框中. 设计思路: 使用java.util中的Random类来获取随机数,存入数组后,定义一个String类的对象result,利用for循环存储要输出的数组内容到result并且求和:再利用javax.swing中的JoptionPane类创建消息框进行结果输出. 源代码: import java.util.*; import javax.swing.

  • 如何用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.

随机推荐