在Java中我们能够使用java.util.Random类来产生一个随机数发生器。它有两种形式的构造函数,各自是Random()和Random(long seed)。Random()使用当前时间即System.currentTimeMillis()作为发生器的种子,Random(long seed)使用指定的seed作为发生器的种子。

随机数发生器(Random)对象产生以后,通过调用不同的method:nextInt()、nextLong()、nextFloat()、nextDouble()等获得不同类型随机数。

1>生成随机数
            Random random = new Random();
            Random random = new Random(100);//指定种子数100
            random调用不同的方法,获得随机数。
            假设2个Random对象使用同样的种子(比方都是100),而且以同样的顺序调用同样的函数,那它们返回值全然同样。如以下代码中两个Random对象的输出全然同样
           import java.util.*;
           class TestRandom {
                 public static void main(String[] args) {
                      Random random1 = new Random(100);
                      System.out.println(random1.nextInt());
                      System.out.println(random1.nextFloat());
                      System.out.println(random1.nextBoolean());
                      Random random2 = new Random(100);
                      System.out.println(random2.nextInt());
                      System.out.println(random2.nextFloat());
                      System.out.println(random2.nextBoolean());
                 }
             }

2>指定范围内的随机数
              随机数控制在某个范围内,使用模数运算符%
             import java.util.*;
                  class TestRandom {
                       public static void main(String[] args) {
                            Random random = new Random();
                            for(int i = 0; i < 10;i++) {
                                System.out.println(Math.abs(random.nextInt())%10);
                            }
                       }
                  }
              获得的随机数有正有负的,用Math.abs使获取数据范围为非负数

3>获取指定范围内的不反复随机数
             import java.util.*;
             class TestRandom {
                   public static void main(String[] args) {
                        int[] intRet = new int[6];
                        int intRd = 0; //存放随机数
                        int count = 0; //记录生成的随机数个数
                        int flag = 0; //是否已经生成过标志
                        while(count<6){
                             Random rdm = new Random(System.currentTimeMillis());
                             intRd = Math.abs(rdm.nextInt())%32+1;
                             for(int i=0;i<count;i++){
                                 if(intRet[i]==intRd){
                                     flag = 1;
                                     break;
                                 }else{
                                     flag = 0;
                                 }
                             }
                             if(flag==0){
                                 intRet[count] = intRd;
                                 count++;
                             }
                    }
                   for(int t=0;t<6;t++){
                       System.out.println(t+"->"+intRet[t]);
                   }
                }
             }

Java随机数类Random介绍     

Java有用工具类库中的类java.util.Random提供了产生各种类型随机数的方法。它能够产生int、long、float、double以 及Goussian等类型的随机数。这也是它与java.lang.Math中的方法Random()最大的不同之处,后者仅仅产生double型的随机 数。
类Random中的方法十分简单,它仅仅有两个构造方法和六个普通方法。
构造方法:
(1)public Random()
(2)public Random(long seed)
Java产生随机数须要有一个基值seed,在第一种方法中基值缺省,则将系统时间作为seed。
普通方法:
(1)public synonronized void setSeed(long seed)
该方法是设定基值seed。
(2)public int nextInt()
该方法是产生一个整型随机数。
(3)public long nextLong()
该方法是产生一个long型随机数。
(4)public float nextFloat()
该方法是产生一个Float型随机数。
(5)public double nextDouble()
该方法是产生一个Double型随机数。
(6)public synchronized double nextGoussian()
该方法是产生一个double型的Goussian随机数。
例2 RandomApp.java。
//import java.lang.*;
import java.util.Random;

public class RandomApp{
public static void main(String args[]){
Random ran1=new Random();
Random ran2=new Random(12345);
//创建了两个类Random的对象。
System.out.println("The 1st set of random numbers:");
System.out.println(" Integer:"+ran1.nextInt());
System.out.println(" Long:"+ran1.nextLong());
System.out.println(" Float:"+ran1.nextFloat());
System.out.println(" Double:"+ran1.nextDouble());
System.out.println(" Gaussian:"+ran1.nextGaussian());
          //产生各种类型的随机数
System.out.print("The 2nd set of random numbers:");
for(int i=0;i<5;i++){
System.out.println(ran2.nextInt()+" ");
if(i==2) System.out.println();
//产生同种类型的不同的随机数。
System.out.println();
}
}
}

Random random=new Random();
random.nextInt();

也能够有nextFloat等等,各种基本类型都有

Math.random也能够
比方说你想要0-10之间的随机数
你能够这样写
(int)(Math.random()*10);

JAVA产生指定范围的随机数》

《JAVA产生指定范围的随机数》
   产生机制:
产生Min-Max之间的数字
   实现原理:
      Math.round(Math.random()*(Max-Min)+Min)

long Temp; //不能设定为int,必须设定为long
//产生1000到9999的随机数
Temp=Math.round(Math.random()*8999+1000);

JAVA获取随机数的更多相关文章

  1. Java获取随机数的几种方法

    Java获取随机数的几种方法 .使用org.apache.commons.lang.RandomStringUtils.randomAlphanumeric()取数字字母随机10位; //取得一个3位 ...

  2. java 获取随机数的三种方法

    方法1(数据类型)(最小值+Math.random()*(最大值-最小值+1))例:(int)(1+Math.random()*(10-1+1))从1到10的int型随数 方法2获得随机数for (i ...

  3. Java获取随机数的3种方法

    最小值---最大值(整数)的随机数     方法1 (数据类型)(最小值+Math.random()*(最大值-最小值+1)) 例: (int)(1+Math.random()*(10-1+1)) / ...

  4. Java获取随机数获取制定范围指定个数不重复的随机数

    一.JDK中提供的两种方式 1.Math类中的random()方法public static double random()返回带正号的 double 值,该值大于等于 0.0 且小于 1.0 [0. ...

  5. java 获取随机数的方法

    方法一: (数据类型)(最小值 + Math.random()*(最大值-最小值+1) ); 示例: (int)(1+Math.random()*(10-1+1)): 获取int类型 1-10的随机数 ...

  6. java获取指定长度随机数(版本1)

    获取指定长度随机数,含大小写字母和数字 package org.sw; import java.util.Random; /** * 得到指定位数的随机数 * @author mengzw * @si ...

  7. Java基础 - 获取随机数

    使用方法 package com.demo5; import java.util.Random; /* * 使用步骤: * A:导包 * import java.util.Random; * B:创建 ...

  8. java 产生随机数的方法

    有三种方法: Math.random():这个方法返回一个[0.0, 1.0)的一个随机double型数.它实际是调用Random类的nextDouble()方法.只不过Math类使用的是一个静态随机 ...

  9. Java Random 随机数

    package myrandom; import java.util.Random; /* * Random:用于产生随机数 * * 使用步骤: * A:导包 * import java.util.R ...

随机推荐

  1. 将图片文件转换为.py文件

    最近用wxpython写了一个脚本,其中要给窗体设置图标文件,需要单独的一个ico文件,这样就比较影响美观,另外打包的时候还要将图标文件一起打包很繁琐.这时候看到wxpython文件有一个工具img2 ...

  2. WPFDispatcher示例

    Dispatcher 类提供用于管理线程工作项队列的服务. 效果演示: <Window x:Class="WPF之Dispatcher对象.MainWindow" xmlns ...

  3. 2016021901 - ubuntu截图技巧

    ubuntu系统自带截图功能使用介绍 ubuntu自定义截图快捷键:Shift+PrtSc 截取当前窗口快捷键:Alt+PrtSc 保存全屏截图:PrtSc

  4. nutch 异常集锦

    异常:Exception in thread "main" java.io.IOException: Failed to set permissions of path: \tmp ...

  5. 关于mysql授权账号权限时的空密码问题

    -root ~]$ mysql -uroot -p Enter password:ERROR 1045 (28000): Access denied for user ‘root’@'localhos ...

  6. 【NOIP 2011】 观光公交

    题目描述 Description 风景迷人的小城 Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光公交车在第0 分钟出现在1号 ...

  7. Gradle在大型Java项目上的应用

    在Java构建工具的世界里,先有了Ant,然后有了Maven.Maven的CoC[1].依赖管理以及项目构建规则重用性等特点,让Maven几乎成为Java构建工具的事实标准.然而,冗余的依赖管理配置. ...

  8. 当我们在谈论 DevOps,我们在谈论什么?

    Cloud Insight 携手 BearyChat:打造适合运维人员的团队协作工具 走过 C 轮的 OneAPM,旗下的产品已经日渐丰满,从应用性能监控的 Application Insight 到 ...

  9. 【uva10917】Walk Through the Forest (最短路)

    题目: gbn最近打算穿过一个森林,但是他比较傲娇,于是他决定只走一些特殊的道路,他打算只沿着满足如下条件的(A,B)道路走:存在一条从B出发回家的路,比所有从A出发回家的路径都短.你的任务是计算一共 ...

  10. ckeditor与ckfinder简单整合使用

    Ckeditor与ckfinder简单整合使用 功能:主要用来发送图文的email,图片上传到本地服务器,但是email的图片地址要写上该服务器的远程地址(图片地址:例如:http://www.bai ...