Java 范围为+的随机发生器;例外
我想创建一个随机生成器,其中包含一个范围(由Java 范围为+的随机发生器;例外,java,random,generator,Java,Random,Generator,我想创建一个随机生成器,其中包含一个范围(由var1定义)和一个异常(由blockvar1定义) 我写道: Random rand = new Random(); int var1 = rand.nextInt(var1) + 1; do{ blockvar1 = rand.nextInt(var1) + 1; } while (var1 == blockvar1); 这应该能奏效。它创建一个给定最大值和最小值的整数,而不生成第三个参数中给定的数字 public static Inte
var1
定义)和一个异常(由blockvar1
定义)
我写道:
Random rand = new Random();
int var1 = rand.nextInt(var1) + 1;
do{
blockvar1 = rand.nextInt(var1) + 1;
}
while (var1 == blockvar1);
这应该能奏效。它创建一个给定最大值和最小值的整数,而不生成第三个参数中给定的数字
public static Integer RandomNumberRange(int max, int min, int block)
{
Random rand = new Random();
int randomNum;
do {
randomNum = rand.nextInt((max - min) + 1) + min;
} while (randomNum == block && (max != block && block != min));
return randomNum;
}
调用范围为5-1和2的函数作为阻塞的输出示例
public static void main(String[] args) {
for(int i = 0; i < 20; i++)
System.out.print(RandomNumberRange(5, 1, 2) + " ");
}//main method
这应该能奏效。它创建一个给定最大值和最小值的整数,而不生成第三个参数中给定的数字
public static Integer RandomNumberRange(int max, int min, int block)
{
Random rand = new Random();
int randomNum;
do {
randomNum = rand.nextInt((max - min) + 1) + min;
} while (randomNum == block && (max != block && block != min));
return randomNum;
}
调用范围为5-1和2的函数作为阻塞的输出示例
public static void main(String[] args) {
for(int i = 0; i < 20; i++)
System.out.print(RandomNumberRange(5, 1, 2) + " ");
}//main method
我对您的代码有两个(小)问题:
var1
有两个目的,它既是随机数的上限,也是随机数本身;这会导致混乱,结果可能与预期不符(即使在涉及随机数时预期模糊)private static Random rand = new Random();
/**
* Generates a pseudo-random number in the range 0..var1, but not blockvar1
* @param var1 upper bound (inclusive) of random number
* @param blockvar1 forbidden number
* @return the generated random number
*/
public static int randomNumberRange(int var1, int blockvar1) {
if (blockvar1 < 0 || blockvar1 > var1) {
throw new IllegalArgumentException("blockvar1 must be between 0 and var1 inclusive");
}
int result = rand.nextInt(var1);
if (result >= blockvar1) {
result++;
}
return result;
}
您会注意到,它提供了从0到4的数字,但从不提供2。我对您的代码有两个(次要)问题:
var1
有两个目的,它既是随机数的上限,也是随机数本身;这会导致混乱,结果可能与预期不符(即使在涉及随机数时预期模糊)private static Random rand = new Random();
/**
* Generates a pseudo-random number in the range 0..var1, but not blockvar1
* @param var1 upper bound (inclusive) of random number
* @param blockvar1 forbidden number
* @return the generated random number
*/
public static int randomNumberRange(int var1, int blockvar1) {
if (blockvar1 < 0 || blockvar1 > var1) {
throw new IllegalArgumentException("blockvar1 must be between 0 and var1 inclusive");
}
int result = rand.nextInt(var1);
if (result >= blockvar1) {
result++;
}
return result;
}
你会注意到它会给你从0到4的数字,除了2以外。暂时没有理由,只要做
if(var1>=blockvar1){var1++;}
除此之外,“它不工作”到底意味着什么?你的预期输出不是什么?暂时没有理由,只要做if(var1>=blockvar1){var1++;}
除此之外,“它不工作”的确切意思是什么?你的预期输出是什么?