如何int在特定范围内生成随机值?
我试过以下,但那些不起作用:
尝试1:
randomNum = minimum + (int)(Math.random() * maximum);
// Bug: `randomNum` can be bigger than `maximum`.
Run Code Online (Sandbox Code Playgroud)
尝试2:
Random rn = new Random();
int n = maximum - minimum + 1;
int i = rn.nextInt() % n;
randomNum = minimum + i;
// Bug: `randomNum` can be smaller than `minimum`.
Run Code Online (Sandbox Code Playgroud) 我试图获得0到100之间的随机数.但是我希望它们是唯一的,而不是在序列中重复.例如,如果我得到5个数字,它们应该是82,12,53,64,32而不是82,12,53,12,32我使用它,但它在序列中生成相同的数字.
Random rand = new Random();
selected = rand.nextInt(100);
Run Code Online (Sandbox Code Playgroud) 我想生成随机数,但不希望它们来自exclude数组.这是我的代码.
public int generateRandom(int start, int end, ArrayList<Integer> exclude) {
Random rand = new Random();
int range = end - start +1 - exclude.size();
int random = rand.nextInt(range) + 1;
for(int i = 0; i < exclude.size(); i++) {
if(exclude.get(i) > random) {
return random;
}
random++;
}
return random;
}
Run Code Online (Sandbox Code Playgroud)
我在while循环中使用此函数,并在每次迭代期间添加一个新值exclude.有时会返回属于的数字exclude.有什么问题?