gpt4 book ai didi

java - 使用 Math.random() 和 ThreadLocalRandom.current().nextDouble() 以及 Random 类 nextDouble() 方法时获得相同的数字?

转载 作者:行者123 更新时间:2023-11-30 10:01:02 29 4
gpt4 key购买 nike

Java 中的 BankApplication 程序,setDebitCard() 函数中的问题。

在这里,我无法在每次 java 运行 后为 debitCardNumber 变量生成一个唯一的随机数,而 debitCardPin 可以正常工作。

我尝试使用随机类方法nextDouble(),Math.random(), ThreadLocalRandom.current().nextDouble()也是..

问题:

  1. 尝试上述所有操作后,debitCardNumber 输出相同。 (没有任何语法错误)

  2. 此外,我得到的是相同的 10 位数字 debitCardNumber 而不是 12 位数字。

  3. debitCardPin 工作正常,但有时它会给我一个唯一的 3 位随机数。

代码

package bankAccountApp;

import java.util.Random;

import java.util.concurrent.ThreadLocalRandom;

public class Current extends Account {

private int debitCardNumber;

private int debitCardPin;

Random rand = new Random();

//setDebitCard() code

private void setDebitCard(){

debitCardNumber = (int)(ThreadLocalRandom.current().nextDouble()*Math.pow(10,12));


/* Also tried using

debitCardNumber = (int)(rand.nextDouble()*Math.pow(10,12));

debitCardNumber = (int)(Math.random()*Math.pow(10,12));

*/

debitCardPin = (int)(Math.random()*Math.pow(10,4));
}

预期结果:

  1. debitCardNumber 应在每次 JAVA RUN

  2. 后返回一个唯一的随机 12 位整数
  3. debitCardPin 应仅返回 4 位整数。

实际结果:

  1. debitCardNumber 在每次 JAVA RUN

  2. 后返回相同的 10 位整数
  3. debitCardPin 有时返回一个 3 位唯一随机整数。

最佳答案

问题在于,当您向下转换为 int 时,int 可以容纳的最大值是 2147483647,它是 10 位数字所以它不可能返回一个比那个更大的数字。

因此您需要将字段 debitCardNumber 设为 long:

private long debitCardNumber;

将代码更改为获取 12 位数字的代码:

long min = (long)Math.pow(10, 11);
long max = (long)Math.pow(10, 12);
long debitCardNumber = ThreadLocalRandom.current().nextLong(min, max);

对于 4 位数字 debitCardPin :

int debitCardPin = ThreadLocalRandom.current().nextInt(1000, 10000);

没有必要将数字转换为 longint 明确地有 ThreadLocalRandom.current() 上的方法会给出给定 minmax 值的相应数字类型。使用此方法,您可以放心,您始终获得 min(含)和 max(不含)之间的值。这将解决您的问题“但有时它会给我一个唯一的 3 位随机数。”

关于java - 使用 Math.random() 和 ThreadLocalRandom.current().nextDouble() 以及 Random 类 nextDouble() 方法时获得相同的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57672882/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com