📜  Java中的Java .util.Random.nextInt()

📅  最后修改于: 2022-05-13 01:54:38.761000             🧑  作者: Mango

Java中的Java .util.Random.nextInt()

生成随机数本身具有很好的实用价值,并且通过使用函数来实现它们可以证明是非常有用的。 Java在其语言中已将整个库专用于随机数,看到它在日常编程中的重要性。 nextInt() 将在本文中讨论。

  1. Java.util.Random.nextInt() : nextInt()用于从这个随机数生成器的序列中获取下一个随机整数值。
    Declaration : 
    public int nextInt()
    Parameters : 
    NA
    Return Value : 
    The method call returns the next integer number from the sequence
    Exception : 
    NA
    

    以下示例显示了Java.util.Random.nextInt() 的用法

    // Java code to demonstrate the working
    // of nextInt()
    import java.util.*;
    public class NextInt1 {
        public static void main(String[] args)
        {
      
            // create random object
            Random ran = new Random();
      
            // generating integer
            int nxt = ran.nextInt();
      
            // Printing the random Number
            System.out.println
            ("The Randomly generated integer is : " + nxt);
        }
    }
    

    输出:

    The Randomly generated integer is : -2052834321
    
  2. Java.util.Random.nextInt(int n)nextInt(int n)用于获取介于 0(含)和此参数中传递的数字(n)之间的随机数,不包括。
    Declaration : 
    public int nextInt(int n)
    Parameters : 
    n :  This is the bound on the random number to be returned. Must be positive.
    Return Value : 
    Returns a random number.
    between 0 (inclusive) and n (exclusive).
    Exception : 
    IllegalArgumentException :  This is thrown if n is not positive.
    

    以下示例显示了Java.util.Random.nextInt(int n) 的用法

    // Java code to demonstrate the working
    // of nextInt(n)
    import java.util.*;
    public class NextInt2 {
        public static void main(String args[])
        {
      
            // create random object
            Random ran = new Random();
      
            // Print next int value
            // Returns number between 0-9
            int nxt = ran.nextInt(10);
      
            // Printing the random number 
            // between 0 and 9
            System.out.println
            ("Random number between 0 and 10 is : " + nxt);
        }
    }
    

    输出:

    Random number between 0 and 9 is : 4
    
例外

IllegalArgumentException :当传递的参数不是正数时会发生这种情况。
举例说明当 n 不是正数时产生的异常:

// Java code to demonstrate the Exception
// of nextInt(n)
import java.util.*;
public class NextInt2 {
    public static void main(String[] args)
    {
  
        // create random object
        Random ran = new Random();
  
        // generating number between 0 and -12345
        // Raises Runtime error, as n is negative.
        int nxt = ran.nextInt(-12345);
  
        System.out.println
        ("Generated Random number is : " + nxt);
    }
}

运行时错误:

Exception in thread "main" java.lang.IllegalArgumentException: bound must be positive
    at java.util.Random.nextInt(Random.java:388)
    at NextInt2.main(NextInt2.java:14)

实际应用

生成随机数有许多应用,无论是彩票、赌博还是小型游戏。下面演示了一个小型骰子游戏,其中 2 名玩家掷出 6 点骰子,获得 30 分的人第 1 名获胜。

// Java code to demonstrate the Application
// of nextInt(n)
import java.util.*;
public class NextIntAppli {
    public static void main(String[] args)
    {
  
        int sum = 0, sum1 = 0, count = 0, count1 = 0;
        int turn = 0;
  
        // creating random object
        Random ran = new Random();
        int flag = 0;
  
        while (true) {
            if (turn % 2 == 0) {
  
                int p1 = ran.nextInt(6);
                sum += p1;
                System.out.printf
                ("Player 1 after turn %d is : %d\n", turn, sum);
            }
            else {
  
                int p2 = ran.nextInt(6);
                sum1 += p2;
                System.out.printf
                ("Player 2 after turn %d is : %d\n", turn, sum1);
            }
            if (sum >= 30) {
                flag = 1;
                break;
            }
            if (sum1 >= 30) {
                flag = 2;
                break;
            }
            turn++;
        }
        if (flag == 1)
            System.out.println("\nPlayer 1 WON!!");
        else
            System.out.println("\nPlayer 2 WON!!");
    }
}

输出:

Player 1 after turn 0 is : 0
Player 2 after turn 1 is : 4
Player 1 after turn 2 is : 2
Player 2 after turn 3 is : 9
Player 1 after turn 4 is : 5
Player 2 after turn 5 is : 9
Player 1 after turn 6 is : 6
Player 2 after turn 7 is : 14
Player 1 after turn 8 is : 8
Player 2 after turn 9 is : 18
Player 1 after turn 10 is : 12
Player 2 after turn 11 is : 21
Player 1 after turn 12 is : 13
Player 2 after turn 13 is : 26
Player 1 after turn 14 is : 18
Player 2 after turn 15 is : 29
Player 1 after turn 16 is : 18
Player 2 after turn 17 is : 34
Player 2 WON!!