我试图获得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) 我想在Java中创建一组没有重复的随机数.
例如,我有一个数组来存储从0到9999的10,000个随机整数.
这是我到目前为止:
import java.util.Random;
public class Sort{
public static void main(String[] args){
int[] nums = new int[10000];
Random randomGenerator = new Random();
for (int i = 0; i < nums.length; ++i){
nums[i] = randomGenerator.nextInt(10000);
}
}
}
Run Code Online (Sandbox Code Playgroud)
但上面的代码会产生重复.如何确保随机数不重复?
我想写一个算法来生成1-7之间的随机数,给出一个生成1-5之间随机数的方法.
我想到了一个解决方案rand(5)/ 5*7 ??
我认为这应该有效.
谁能告诉我一个最佳解决方案?
我在某处读到了这个解决方案,但我不知道他们怎么想保持"int num = 5*(rand5() - 1)+(rand5() - 1);" .我知道它会在1-7之间生成一个随机数,但是他们如何看待这种逻辑或者他们想要表达的内容并没有进入我的脑海.任何人都可以对此有所了解.
public static int rand7() {
while (true) {
int num = 5 * (rand5() - 1) + (rand5() - 1);
if (num < 21)
return (num % 7 + 1);
}
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
在Java中生成唯一的随机数
我正在创建一个Android的彩票应用程序,它将生成1到49之间的一组6个数字.我遇到的问题是如何使这些数字独一无二.
Random r = new Random();
int n1=r.nextInt(48) + 1;
ball1.setText(String.valueOf(n1));
int n2=r.nextInt(48) + 1;
ball2.setText(String.valueOf(n2));
int n3=r.nextInt(48) + 1;
ball3.setText(String.valueOf(n3));
int n4=r.nextInt(48) + 1;
ball4.setText(String.valueOf(n4));
int n5=r.nextInt(48) + 1;
ball5.setText(String.valueOf(n5));
int n6=r.nextInt(48) + 1;
ball6.setText(String.valueOf(n6));
Run Code Online (Sandbox Code Playgroud)