【JAVA】产生随机数:rand.nextInt(int n )

参考链接:

1. 代码示例

  - `Random rand = new Random();`
  - `p += rand.nextInt(2); //取0-2(左闭右开不包括2)的整数`

2. rand.nextInt()的用法

  • 背景:

    • 自从JDK最初版本发布起,我们就可以使用java.util.Random类产生随机数了。
    • 在JDK1.2中,Random类有了一个名为nextInt()的方法:public int nextInt(int n)
  • 给定一个参数n,nextInt(n)将返回一个大于等于0小于n的随机数,即:0 <= nextInt(n) < n。?

  • 源码:

    /**
     * Returns a pseudo-random uniformly distributed {@code int}
     * in the half-open range [0, n).
     */
    public int nextInt(int n) {
        if (n <= 0) {
            throw new IllegalArgumentException("n <= 0: " + n);
        }
        if ((n & -n) == n) {
            return (int) ((n * (long) next(31)) >> 31);
        }
        int bits, val;
        do {
            bits = next(31);
            val = bits % n;
        } while (bits - val + (n - 1) < 0);
        return val;
    }

3. rand.nextInt随机数取值范围

  • 左闭右闭 [a,b]:rand.nextInt(b-a+1)+a

  • 左闭右开 [a,b):rand.nextInt(b-a)+a

  • 示例:

    • 要求在10到300中产生随机数[10,300]包含10和300: int randNum = rand.nextInt(300-10+1) + 10;
    • rand.nextInt(300-10+1)=rand.nextInt(291)意思是产生[0,291)不包括291再加10就是[10,301)不包括301,如果要包括300所以要 rand.nextInt(300-10+1)里面要加1.
    • 如果是[10,300)不包括300就是 rand.nextInt(300-10)+10,不要加1.

4. random.nextInt()与Math.random()基础用法

  • 1、来源

    • random.nextInt() 为 java.util.Random类中的方法;
    • Math.random() 为 java.lang.Math 类中的静态方法。
  • 2、用法

    • 产生0-n的伪随机数(伪随机数参看最后注解):
    • // 两种生成对象方式:带种子和不带种子(两种方式的区别见注解)
      • Random random = new Random();
      • Integer res = random.nextInt(n);
      • Integer res = (int)(Math.random() * n);
  • 3、总结

    • Math.random() 方法生成[0, 1)范围内的double类型随机数;Random类中的nextXxxx系列方法生成0-n的随机数;
    • Math.random() 线程安全,多线程环境能被调用;
    • 如无特殊需求,则使用(int)(Math.random()*n)的方式生成随机数即可。
  • 4、注:何谓伪随机数

    • 伪随机既有规则的随机,Random类中的随机算法就是伪随机。
    • 具体表现为:相同种子数的Random对象生成的随机数序列相同:

END

原文地址:https://www.cnblogs.com/anliux/p/12327584.html

时间: 2024-10-10 18:14:38

【JAVA】产生随机数:rand.nextInt(int n )的相关文章

java.util.Random 类的 nextInt(int num )

随机产生3个67~295的整数并找出数值居中的数 并输出中间的数例如:100,225和200,输出200 要随机产生某个范围内的整数,用 java.util.Random 类的 nextInt(int num) 最简洁. nextInt( int num) 能接受一个整数作为它所产生的随机整数的上限,下限为零,比如:nextInt(4)将产生0,1,2,3这4个数字中的任何一个数字,注意这里不是0-4,而是0-3..但下限总是零,不能更改,所以若要达到非零下限的效果,必须把上限减去下限的结果传给

java生成随机数的两种方式

[方法一] 调用 util 中的 Random 类:定义Random的对象 rand,用 rand.nextInt()生成随机整数 或者将 next 后面的Int改为 Double,Float ,  Long,分别对应了双精度,单精度和长整形) 注意只有 nextInt( ) 可以带参数,例如: rand.nextInt(10) 则随机生成0到9的随机数: import java.util.Random; public class Test{ public static void main(St

Java获取随机数的3种方法(转)

方法1(数据类型)(最小值+Math.random()*(最大值-最小值+1)) 例: (int)(1+Math.random()*(10-1+1)) 从1到10的int型随数 方法2 获得随机数 for (int i=0;i<30;i++) {System.out.println((int)(1+Math.random()*10));} (int)(1+Math.random()*10) 通过java.Math包的random方法得到1-10的int随机数 公式是:最小值---最大值(整数)的

java产生随机数的几种方式

java产生随机数的几种方式 一.在j2se里我们可以使用Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double,我们可以把他乘以一定的数,比如说乘以100,他就是个100以内的随机,这个在j2me中没有. 二.在java.util这个包里面提供了一个Random的类,我们可以新建一个Random的对象来产生随机数,他可以产生随机整数.随机float.随机double,随机long,这个也是我们在j2me的程序里经常用的一个取随机数的方法. 三.在我们的S

JAVA获取随机数

在Java中我们能够使用java.util.Random类来产生一个随机数发生器.它有两种形式的构造函数,各自是Random()和Random(long seed).Random()使用当前时间即System.currentTimeMillis()作为发生器的种子,Random(long seed)使用指定的seed作为发生器的种子. 随机数发生器(Random)对象产生以后,通过调用不同的method:nextInt().nextLong().nextFloat().nextDouble()等

Java生成随机数(n位长度,字母+数字)

1 package demo; 2 import java.util.Random; 3 4 /** 5 * 生成字母+数字的随机数 6 * @author sy 7 * 8 */ 9 public class Demo{ 10 11 public static void main(String[] args){ 12 System.out.println(getStringRandom(6)); 13 } 14 15 public static String getStringRandom(i

使用JAVA生成随机数实现矩阵乘法

矩阵乘法的定义: 在计算机中,一个矩阵实际上就是一个二维数组.一个m行n列的矩阵与一个n行p列的矩阵可以相乘,得到的结果是一个m行p列的矩阵,其中的第i行第j列位置上的数为第一个矩阵第i行上的n个数与第二个矩阵第j列上的n个数对应相乘后所得的n个乘积之和.比如,下面的算式表示一个2行2列的矩阵乘以2行3列的矩阵,其结果是一个2行3列的矩阵. 其中,结果矩阵的那个4(结果矩阵中第二(i)行第二(j)列)=2(第一个矩阵第二(i)行第一列)*2(第二个矩阵中第一行第二(j)列)+0(第一个矩阵第二(

【Java】随机数生成器、GObject、事件驱动

学习资源来自--斯坦福大学2008年的公开课 这部分内容主要是使用java进行绘图的操作,个人觉得是挺有趣的一块内容,看完捣鼓捣鼓自己做个拼图之类的小游戏玩玩也是可以的. 8.随机数生成器:    private RandomGenerator rgen=RandomGenerator.getInstance();        方法:        int nextInt(int low, int high)--返回一个介于两者之间的一个随机数        int nextInt(int n

java 产生随机数

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.out.println(s); } } ja