JAVA中如何产生5个从1到33之间不相同的随机数,在线等

如题所述

int num = (int)(Math.random()*(33-1)+1);
用Math.random();可以产生一个0到1之间(不包括1)的double数,再乘以(上限-下限)+下限 就可以得到一个1到33的double数,再强转为int类型,用num接收。请采纳!
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-03-03
import java.util.*;
public class test {
public static void main(String[] args)
{
Random rand = new Random();
for (int i = 0; i < 5; i++) {
System.out.println(rand.nextInt(33));
}
}

}

在java中有random这种方法可以随机取数的。
详细,望采纳!追问

这样会产生相同的数字吧

追答

import java.util.*;
public class test {
public static void main(String[] args)
{
int []a={0,1,2,3,4};
Random rand = new Random();
for (int i =0,j=1; j < 6||i<5; i++)
{

a[i]=rand.nextInt(33);
if(a[0]!=a[1]&&a[0]!=a[2]&&a[0]!=a[3]&&a[0]!=a[4]&&a[1]!=a[2]&&a[1]!=a[3]&&a[1]!=a[4]&&a[2]!=a[3]&&a[2]!=a[4]&&a[3]!=a[4])
{
System.out.println(a[i]);
}
}
}

}
这样比较笨拙,不过可以实现不重复的。

第2个回答  2018-05-09
看是不是这个
List<Integer> list = new ArrayList<>();

for (int i = 1; i <= 33; i++) {
list.add(i);
}

for (int i = 0; i < 5; i++) {
int index = new Random().nextInt(list.size());
System.out.println("第"+(i+1)+"个为:"+list.get(index));
list.remove(index);
}
第3个回答  2014-03-03
for(int i=0;i<5;i++)
{
    a[i]=(int)(Math.random()*33+1);
}

第4个回答  2019-04-07
public static void main(String[] args) {
HashSet<Integer> Radball = new HashSet<>();

Random random = new Random();

for(;Radball.size()<6;) {
Radball.add(random.nextInt());
}
for(Integer item:Radball) {
System.err.print(item+" ");
}

}
相似回答