Java Random 随机数

标签: random java 随机数
1419人阅读 评论(0) 收藏 举报
分类:

转载请注明来源: http://blog.csdn.net/kjunchen/article/details/52081407

Java Random 随机数

实际开发中产生随机数的使用很常见,因此在程序中产生随机数的操作很重要。在Java中主要提供了两种方法产生随机数,分别是调用Math类的random()方法和Random类提供的产生各种数据类型的随机数的方法。

Math.random()方法

在Math类中存在一个random()方法,用于产生随机数,这个方法默认生成大于等于0.0小于1.0的double型随机数,即0<=Math.random()<1.0,虽然Math.random()方法可以产生0~1之间的double型数字,其实只要在Math.random()语句上稍加处理,就可以使用这个方法产生任意范围的随机数。

(int)(Math.Random()*n) ==>> 返回大于等于0小于n的随机数
m+(int)(Math.Random()*n) ==>> 返回大于等于m小于m+n(不包括m+n)的随机数

下面写个示例:

public class MathRandomNumber {

    public static void main(String[] args) {
        System.out.println("Math.random()产生的随机数: " + Math.random());
        System.out.println("任意一个0~50的随机数: " + getRandomNumber(0, 50));
    }

    /**
     * 获得某个范围内的随机数
     * @param num1 起始范围参数
     * @param num2 终止范围参数
     * @return 返回num1到num2的随机数
     */
    public static int getRandomNumber(int num1, int num2) {
        return (int) (num1 + Math.random() * (num2 - num1));
    }

}

运行结果为:

Math.random()产生的随机数: 0.43653516378934365
任意一个0~50的随机数: 28

每次运行的结果都不一样。

使用Math类的random()方法也可以随机生成字符,可以使用如下代码生成a~z之间的字符。

(char)('a' + Math.random() * ('z' - 'a' + 1))

任意两个字符之间的随机字符,可以使用如下方式:

(char)(char1 + Math.random() * (char2 - char1 + 1))

示例:

public class MathRandomChar {

    public static void main(String[] args) {
        //获取a~z之间的随机字符
        System.out.println("任意小写字符: " + getRandomChar('a', 'z'));
        //获取A~Z之间的随机字符
        System.out.println("任意大写字符: " + getRandomChar('A', 'Z'));
        //获取0~9之间的随机字符
        System.out.println("0~9之间任意数字: " + getRandomChar('0', '9'));
    }

    //获取任意字符之间的随机字符
    public static char getRandomChar(char char1, char char2) {
        return (char)(char1 + Math.random() * (char2 - char1 + 1));
    }
}

运行结果为:

任意小写字符: g
任意大写字符: U
0~9之间任意数字: 6

random()方法返回的值实际上是伪随机数,他通过复杂的运算而得到一系列的数。该方法是通过当前时间作为随机数生成的参数,所以每次执行程序都会产生不同的随机数。

Random类方式

除了Math类中的random()方法可以获取随机数之外,Java中还提供了一种可以获取随机数的方式,就是java.util.Random类。可以通过实例化一个Random对象创建一个随机数生成器。

语法如下:

Random r = new Random();

其中,r是Random对象。

以这种方式实例化对象时,Java编译器以系统当前时间作为随机数生成种子,因为每时每刻的时间不能相同,所以产生的随机数不同。

也可以在实例化Random对象时,设置随机数生成的种子。

语法如下:

Random r = new Random(seedValue);

seedValue是随机数生成的种子。

  • public int nextInt(): 返回一个随机整数
  • public int nextInt(int n): 返回大于等于0小于n的随机整数
  • public long nextLong(): 返回一个随机长整型数
  • public boolean nextBoolean(): 返回一个随机布尔型值
  • public float nextFloat(): 返回一个随机浮点型值
  • public double nextDouble(): 返回一个随机双精度浮点型数
  • public double nextGaussian(): 返回一个概率密度为高斯分布的双精度值

实例代码:

public static void main(String[] args) {
    //实例化一个Random类
    Random r = new Random();
    //随机产生一个整数
    System.out.println("随机产生一个整数: " + r.nextInt());
    //随机产生一个大于等于0小于10的整数
    System.out.println("随机产生一个大于等于0小于10的整数: " + r.nextInt(10));
    //随机产生一个布尔型的值
    System.out.println("随机产生一个布尔型的值: " + r.nextBoolean());
    //随机产生一个浮点型的值
    System.out.println("随机产生一个浮点型的值: " + r.nextFloat());
    //随机产生一个双精度型的值
    System.out.println("随机产生一个双精度型的值: " + r.nextDouble());
    //随机产生一个概率密度为高斯分布的双精度值
    System.out.println("随机产生一个概率密度为高斯分布的双精度值: " + r.nextGaussian());
}

运行结果如下:

随机产生一个整数: 105798029
随机产生一个大于等于0小于10的整数: 3
随机产生一个布尔型的值: false
随机产生一个浮点型的值: 0.20587307
随机产生一个双精度型的值: 0.6920970515624921
随机产生一个概率密度为高斯分布的双精度值: 0.5640177494983246

通过以上两者方式我们就可以轻松的产生我想要的随机数。

欢迎加QQ群交流: 365532949
Homepage: http://junkchen.com

查看评论

java中的随机数Random

java中的随机数Random文章分类:Java编程java中一般有两种随机数,一个是Math中random()方法,一个是Random类。 一、Math.random()随即生成0...
  • xiaorubj001
  • xiaorubj001
  • 2010-11-03 10:30:00
  • 38217

JAVA学习笔记:随机数(Math类和Random类生成的随机数)

JAVA基础:随机数(Math类和Random类生成的随机数)
  • qq_22195761
  • qq_22195761
  • 2017-04-21 13:29:24
  • 19159

JAVA获取随机数

         在Java中我们可以使用java.util.Random类来产...
  • herrapfel
  • herrapfel
  • 2007-11-14 16:37:00
  • 332205

java学习之产生随机数的三种方式

Java产生随机数的几种方式 一.在j2se里我们可以使用Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double,我们可以把他乘以一定的数,比如说乘以100,...
  • maoshaofeng8
  • maoshaofeng8
  • 2017-01-18 17:36:14
  • 4858

Java获取随机数的3种方法

方法1 (数据类型)(最小值+Math.random()*(最大值-最小值+1)) 例: (int)(1+Math.random()*(10-1+1)) 从1到10的int型随数 方法2 ...
  • sinat_29255093
  • sinat_29255093
  • 2016-07-11 15:31:25
  • 4159

Java Random 随机数

转载请注明来源: http://blog.csdn.net/kjunchen/article/details/52081407 Java Random 随机数实际开发中产生随机数的使用很常见,因此在程...
  • KjunChen
  • KjunChen
  • 2016-07-31 22:39:39
  • 1419

<em>java</em> <em>随机数</em> Math.<em>random</em>

<em>java</em> <em>随机数</em> Math.<em>random</em> 2010-09-13 上传大小:81KB JMenuBarmenuTheme //产生<em>随机数</em>的类 final SuiJiShuClass sjs=new SuiJiShuClass(); final JPanel panel=...
  • 2018年04月09日 00:00

java常用类--随机数类Random

Random类用于生成一个伪随机数,它的构造器可以是无参数(以系统时间为种子)的也可以显式的传入一个种子; 它可以输出各种类型的随机数;如果两个random的初始种子是一样的,那么他们产生的相同类型...
  • acm_lkl
  • acm_lkl
  • 2015-01-25 22:09:07
  • 2092

[疯狂Java]基础类库:Random(随机数生成)、ThreadLocalRandom(线程安全随机数生成)

1. Random类的使用方法:     1) 和其它语言一样,Java的Random其实也是一个为随机序列生成器,同样需要一个序列种子作为序列的开关,如果种子相同则产生的序列相同;     2) 构...
  • Lirx_Tech
  • Lirx_Tech
  • 2016-05-22 14:18:56
  • 2671

Java 产生随机数的三种方式

为什么说Java中的随机数都是伪随机数?什么是伪随机数? 伪随机数是看似随机实质是固定的周期性序列,也就是有规则的随机。 只要这个随机数是由确定算法生成的,那就是伪随机,只能通过不断算法优化,使你的随...
  • YTTmiao
  • YTTmiao
  • 2017-10-09 22:18:57
  • 416
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 18万+
    积分: 2175
    排名: 2万+
    博客专栏