如何在java中生成随机数

时间:2013-10-02 00:02:37

标签: java random numbers

如何使用Math.random()生成两个上升的随机数?例如,我正试图从集(2,4,6,8)生成一个随机数,你会怎么做?

7 个答案:

答案 0 :(得分:5)

对于此特定集,您可以使用

(int)(Math.random() * 4) * 2 + 2

下面:

  • Math.random()生成的数字大于或等于0.0且严格小于1.0;
  • (int)(... * 4)给出0,1,2,3中的一个。
  • ... * 2 + 2给出了2,4,6,8中的一个。

答案 1 :(得分:2)

好的,让我们做一个真正的通用解决方案。

int lower = 2;
int upper = 8;
int step = 2;
int rand = (int)(Math.random() * (upper-lower+1));
int result = rand - rand%step + lower;

如果要在另一个集合中生成数字而不是指定的数字,只需更改lower,upper和step变量以适合您的集合。它包括上限,如果它在集合中。

答案 2 :(得分:1)

(几乎)完全一般的方法并不那么难。

static randInt(int first, int last, int step) {
    int nsteps = (last+1-first) / step;
    return first + step*(int)(nsteps*Math.random());
}

如果{start, start+step, start+2*step, ... }不是序列的一部分,那么返回从stopstop的随机整数,或stop之前的最后一个数字。

int choice = randInt(2, 8, 2); /* random choice from {2, 4, 6, 8} */

...解决了样本问题。

(几乎)部分是这不会处理参数中的整数溢出或符号错误(step为零,step<0时为first<last,反之亦然。)< / p>

答案 3 :(得分:0)

int[] numSet={2,4,6,8};
Random myRand=new Random();
int myNum=numSet[myRand.nextInt(numSet.length)];

这会创建一个数字数组,即随机对象,然后从数组中选择一个随机元素。这并不假设数字是任何类型的数学系列。就此而言,它们可以是11,25,31,876,984368,7432,84562。

请不要告诉我,有一个多项式从其y值生成该集合。我知道。

答案 4 :(得分:0)

将这些数字放在数组中。 使用数组的长度生成一个随机数 - 1并将其用作随机选择数组元素的索引。

答案 5 :(得分:0)

你也可以像这样使用java.util.Random类:

    int values[] = {2,4,6,8};
    Random randomGenerator = new Random();
    int randomInt = randomGenerator.nextInt(values.length);
    int randomValue = values[randomInt]; /* Here's your random value from your set */ 

答案 6 :(得分:0)

我想补充更一般的答案。

假设集合中的最小整数是A,集合的大小是S.集合中的随机整数将是这样的:

A + myRandom.nextInt(S) * 2

对于Java中的具体示例,它将是:

Random myRandom = new Random();
int randomNum = 2 + myRandom.nextInt(4) * 2;