如何在Java中使用-1和1之间的随机数

时间:2016-10-09 10:32:45

标签: java random numbers

试图解决这个问题一段时间,需要一个-1,0或1的随机数。任何帮助都会很棒。

5 个答案:

答案 0 :(得分:0)

Random random = ThreadLocalRandom.current();
int randomNumber = random.nextInt(3) - 1;

将完成工作

答案 1 :(得分:0)

如果您使用Java< 8版本然后旧的方法将很适合你:

您可以使用java.util.Random类及其方法nextInt(int bound)。此方法生成从0(包括)到绑定(不包括)的随机整数。如果你想要一些特定的范围,那么你需要执行一些简单的数学运算:

  1. 剪切范围:max - min
  2. 如果要包含上限值,则会添加1:nextInt((max - min) + 1)(可选步骤)
  3. 将生成的数字移至下限值:nextInt((max - min) + 1) + min
  4. 结果:

    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