试图解决这个问题一段时间,需要一个-1,0或1的随机数。任何帮助都会很棒。
答案 0 :(得分:0)
Random random = ThreadLocalRandom.current();
int randomNumber = random.nextInt(3) - 1;
将完成工作
答案 1 :(得分:0)
如果您使用Java< 8版本然后旧的方法将很适合你:
您可以使用java.util.Random
类及其方法nextInt(int bound)
。此方法生成从0(包括)到绑定(不包括)的随机整数。如果你想要一些特定的范围,那么你需要执行一些简单的数学运算:
max - min
nextInt((max - min) + 1)
(可选步骤)nextInt((max - min) + 1) + min
结果:
Random r = new Random();
int randomNumber = r.nextInt((max - min) + 1) + min;
如果你使用Java> = 8版本,那么你会有更简单的方法:
现在java.util.Random
类根据Stream
api提供其他方法,如:
public IntStream ints(int randomNumberOrigin, int randomNumberBound)
public IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound)
现在你可以生成一个从origin(包括)到绑定(不包括)的随机整数:
Random r = new Random();
r.ints(min, max).findFirst().getAsInt();
如果要在生成过程中包含上限,则:
r.ints(min, (max + 1)).findFirst().getAsInt();
防止产生无限制的流:
r.ints(min, (max + 1)).limit(1).findFirst().getAsInt();
或
r.ints(1, min, (max + 1)).findFirst().getAsInt();
答案 2 :(得分:0)
回答1
long l = System.currentTimeMillis();
int randomNumber = (int) (l % 3) - 1;
回答2
int randomNumber = (int) (Math.random() * 3) - 1;
回答3
Random random = new Random();
int randomNumber = random.nextInt(3) - 1;
答案 3 :(得分:0)
看看这个
Random r = new Random();
int n = r.nextInt((1 - -1) + 1) + -1;
System.out.println(n);
它会在您想要的范围之间随机生成。输出将为1或0或-1。
答案 4 :(得分:0)
您可以将int
数组与Random类一起使用。将值存储在整数数组中,并为数组的索引生成随机数。
示例代码:
final int[] arr = new int[] { -1, 0, 1 };
Random number = new Random();
int n = number.nextInt(arr.length);
System.out.println(arr[n]); //arr[n] will give you random number