java怎么在范围内生成一个数_java – 如何在一个范围内生成一个随机数,但排除一些?...

没有再生每次随机的一种可能的解决方案是使用以下算法:

public int getRandomWithExclusion(Random rnd, int start, int end, int... exclude) {

int random = start + rnd.nextInt(end - start + 1 - exclude.length);

for (int ex : exclude) {

if (random < ex) {

break;

}

random++;

}

return random;

}

这个方法可以用数组引用来调用,例如。

int[] ex = { 2, 5, 6 };

val = getRandomWithExclusion(rnd, 1, 10, ex)

或直接将号码插入呼叫:

val = getRandomWithExclusion(rnd, 1, 10, 2, 5, 6)

它在开始和结束(包括两端)之间生成一个随机数(int),不会给出数组中包含的任何数字。所有其他数字以相等的概率发生。注意,以下约束必须保持:exclude按升序排序,并且所有数字都在提供的范围内,并且所有数字都相互不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值