随机生成范围内的奇数

时间:2015-09-13 20:02:00

标签: java random

我正在尝试随机生成奇数。我试过这个,但它也产生偶数:

int coun=random.nextInt();
for(int i=1; i<100; i++){
    if(i%2==1){
      coun=random.nextInt(i);
    }
}

如何随机生成奇数?

4 个答案:

答案 0 :(得分:6)

您可以将1添加到偶数

    int x=(int) (Math.random()*100);
    x+=(x%2==0?1:0);

或将数字乘以2并添加一个

    int x=(int) (Math.random()*100);
    x=x*2+1;

很多可能的解决方案。

答案 1 :(得分:4)

2*n + 1形式的所有数字都是奇数。因此,生成随机奇数的一种方法是,生成一个随机整数,将其乘以2,并将其加1:

int n = random.nextInt();
int r = 2 * n + 1; // Where r is the odd random number

对于每个随机数n,生成一个唯一的奇数随机数r(换句话说,它是bijection) - 从而确保无偏见(或至少,如函数random.nextInt())具有很大的无偏见性。

答案 2 :(得分:3)

0到100之间有50个奇数。要选择其中一个,你可以

int n = random.nextInt(50);

获得第n个奇数,你可以

int odd = n * 2 + 1;

全部放在一起

int odd = random.nextInt(max / 2) * 2 + 1;

答案 3 :(得分:1)

一种解决方案是测试随机整数值是否为奇数。如果不是,你可以用一半概率加一或减去一个。

Random random = new Random();
int i = random.nextInt();
if (i % 2 == 0) {
    i += random.nextBoolean() ? 1 : -1;
}