如何用Java生成十个不相等的随机数

2025-03-01 21:20:59
推荐回答(5个)
回答1:

看了几个写法都不是很满意,强烈给楼主推荐我的程序,可以动态生成任意位的不重复随机数,并且范围可以自己控制。
import java.util.Random;
import java.util.Vector;

public class RanNum {

public Vector a; //定义一个向量,用于动态数组的存储

public void RandomNum(int n, int m){
//随机数的范围,可以生成10 个0-100的数,那么n=10,m=100.

Random ran = new Random();
a = new Vector();

int ra = ran.nextInt(m);
a.add(ra); //先生成第一位随机数,后面就有的比较了。

for (int i = 0; i < n; i++) {
int r = ran.nextInt(m);

for (int j = 0; j < i; j++) {
if (a.get(j) == r) { //一旦发现有重复的数,立即结束循环,并重新执行第j步
i--;
break;

} else { //只要没有重复,那么就在第i个位置写入新数据。多次反复j遍

if (a.size() > i)
a.set(i, r);
else
a.add(r);
}
}
}
for (int i = 0; i < n; i++) {
System.out.print(a.get(i) + " ");
}
}
public static void main(String[] args){
RanNum RN = new RanNum();//生成新对象
RN.RandomNum(10, 10); //根据自己要求选择不重复随机数的个数和范围,范围>=个数
}
}

回答2:

public class Test{
public static void main(String[] args){
new Test().random10();
}

public void random10(){
Random r = new Random();// 与Math.random()均可
HashSet s = new HashSet();
while(s.size() < 10){
// int i = (int)(Math.random() * 100);
int i = r.nextInt(100);
//判断是否在set集里
if(!s.contains(i)){ //这个判断可以不需要, 因为Set集, 不允许重复
s.add(i);
}
}
for(Integer i : s){
System.out.print(i + " ");
}
}
}

回答3:

随机数生成函数是有一些公式的,但具体忘了。但公式(或者算法)是死的,你相同的输入(或者输入为空)得到的输出肯定是相同的,所以要真正实现随机数生成,必需要有一个“随机输入”,或者称作“种子”(Seed),而这个seed使用系统时间是非常合适的,但如果你硬不要系统时间,那么你就得找个替代方案,譬如读取内存地址(内存地址范围很大,随机效果很好)。
另外,团IDC网上有许多产品团购,便宜有口碑

回答4:

int count=0;
int[] randNums=new int[10];

Random r=new Random();

while(count<10)
{
int temp=r.nextInt();

boolean exist=false;
for(int i=0;i {
if(randNums[i]==temp) exist=true;
}

if(!exist)
{
randNums[count]=temp;
System.out.println(temp);
++count;
}

}

回答5:

int a []=new a[10];
for(int i = 0;i<10;i++){
a[i]=Math.random()*100;
Sysyem.out.println(a[i]);
}