我正在尝试随机生成奇数。我试过这个,但它也产生偶数:
int coun=random.nextInt();
for(int i=1; i<100; i++){
if(i%2==1){
coun=random.nextInt(i);
}
}
如何随机生成奇数?
答案 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;
}