使用两个不同的随机数选项初始化变量时遇到问题
Having trouble with initializing a variable with two different options of random numbers
我正在尝试创建一个 MasterCard 卡号生成器(我知道这有阴暗面,但这只是为了 class 我保证!:))卡号必须以 51-55 之间的数字开头(含)或 222100-272099(含)之间的数字。有没有办法将变量设置为其中之一?这是我编写的代码行,但它返回了以下错误消息:“错误:二元运算符‘||’的错误操作数类型".
int firstNum = randGen.nextInt(5) + 51 || randGen.nextInt(50000) + 222100;
这个数字最终会成为一个 16 长的字符串,遵循 Luhn 公式,所以如果有更简单的方法this/troubleshoot,请告诉我!
一个干净的解决方案是生成一个包含两个随机数的数组,然后随机选择其中一个,如下所示:
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random randGen = new Random();
int[] nums = new int[2];
nums[0] = randGen.nextInt(5) + 51;
nums[1] = randGen.nextInt(50000) + 222100;
// Assign one of the random numbers to firstNum
int firstNum = nums[randGen.nextInt(2)];
System.out.println(firstNum);
}
}
您可以将变量设置为这些值中的任何一个,但一次只能设置一个。你需要做出选择。您可以使用已有的随机数生成器随机选择。
if (randGen.nextBoolean())
firstNum = randGen.nextInt(5) + 51;
else
firstNum = randGen.nextInt(50000) + 222100;
您只能在布尔表达式之间使用 ||
运算符。另一个具有不同分布的简单解决方案是
int firstNum = randGen.nextInt(50005) + 51;
if (firstNum > 55){ firstNum += (222100-56);}
在这种情况下,获得 53 或 222111 的概率大致相似,但获得 222100 和 272099 之间的数字的概率高于 51 和 55 之间的数字。
我正在尝试创建一个 MasterCard 卡号生成器(我知道这有阴暗面,但这只是为了 class 我保证!:))卡号必须以 51-55 之间的数字开头(含)或 222100-272099(含)之间的数字。有没有办法将变量设置为其中之一?这是我编写的代码行,但它返回了以下错误消息:“错误:二元运算符‘||’的错误操作数类型".
int firstNum = randGen.nextInt(5) + 51 || randGen.nextInt(50000) + 222100;
这个数字最终会成为一个 16 长的字符串,遵循 Luhn 公式,所以如果有更简单的方法this/troubleshoot,请告诉我!
一个干净的解决方案是生成一个包含两个随机数的数组,然后随机选择其中一个,如下所示:
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random randGen = new Random();
int[] nums = new int[2];
nums[0] = randGen.nextInt(5) + 51;
nums[1] = randGen.nextInt(50000) + 222100;
// Assign one of the random numbers to firstNum
int firstNum = nums[randGen.nextInt(2)];
System.out.println(firstNum);
}
}
您可以将变量设置为这些值中的任何一个,但一次只能设置一个。你需要做出选择。您可以使用已有的随机数生成器随机选择。
if (randGen.nextBoolean())
firstNum = randGen.nextInt(5) + 51;
else
firstNum = randGen.nextInt(50000) + 222100;
您只能在布尔表达式之间使用 ||
运算符。另一个具有不同分布的简单解决方案是
int firstNum = randGen.nextInt(50005) + 51;
if (firstNum > 55){ firstNum += (222100-56);}
在这种情况下,获得 53 或 222111 的概率大致相似,但获得 222100 和 272099 之间的数字的概率高于 51 和 55 之间的数字。