目的是:从1-33个数里面随机抽取5个不同的值,并显示出来。
问题是:下面的code已经实现了随机抽取5个值,但是并没有过滤相同的值。我要怎么判断才能实现抽取不同的值出来?大脑适中%……
public class welcome
{
public static void main(String[] args)
{
int n = 33;
int[] oriNumber = new int[n];
for(int i=0; i<oriNumber.length; i++)
{
oriNumber[i] = i + 1;
}
int k = 5;
int[] resultNumber = new int[k];
for(int i=0; i<resultNumber.length; i++)
{
int randNumber = (int)((Math.random()*oriNumber.length)+1);
resultNumber[i] = randNumber;
System.out.print(resultNumber[i] + " ");
}
}
}
问题是:下面的code已经实现了随机抽取5个值,但是并没有过滤相同的值。我要怎么判断才能实现抽取不同的值出来?大脑适中%……
public class welcome
{
public static void main(String[] args)
{
int n = 33;
int[] oriNumber = new int[n];
for(int i=0; i<oriNumber.length; i++)
{
oriNumber[i] = i + 1;
}
int k = 5;
int[] resultNumber = new int[k];
for(int i=0; i<resultNumber.length; i++)
{
int randNumber = (int)((Math.random()*oriNumber.length)+1);
resultNumber[i] = randNumber;
System.out.print(resultNumber[i] + " ");
}
}
}
int random[]=new int[5];
for(int i=0;i<random.length;i++){
random[i]=(int)(Math.random()*33);
for(int j=0;j<i;j++){
if(random[j]==random[i]){
i--;
break;
}
}
}
for(int i=0;i<random.length;i++){
System.out.print(random[i]+" ");
} }
}
* @param args
*/
public static void main(String[] args) { String select[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"11", "12", "13", "14", "15", "16", "17", "18", "19", "20",
"21", "22", "23", "24", "25", "26", "27", "28", "29", "30",
"31", "32", "33" }; String[] select5 = new String[5]; for (int i = 0; i < select5.length; i++) { int val = (int) (Math.random() * 33); select5[i] = select[val]; for (int j = 0; j < i; j++) { if (select5[j] == select[val]) { i--;
break;
}
}
} for (int i = 0; i < select5.length; i++) { System.out.println("Random" + (i + 1) + ":" + select5[i]);
}
}
/**
* 生成【being, end}之间不重复的随机数
*
* @param begin
* 开始值
* @param end
* 结束值
* @param count
* 个数
*
* @return int[]
*/
public static int[] noRepRandoms(int begin, int end, int count) {
int[] tmpArray = new int[end - begin]; for (int i = 0; i < tmpArray.length; i++, begin++)
tmpArray[i] = begin; int[] results = new int[count]; Random rd = new Random(); int tmpIndex = 0, len = tmpArray.length; for (int i = results.length - 1; i >= 0; i--) {
tmpIndex = Math.abs(rd.nextInt() % len);
len--;
results[i] = tmpArray[tmpIndex];
tmpArray[tmpIndex] = tmpArray[len];
} return results;
}
.....
List arr = new ArrayList();
if(!arr.contains()){ //如果不包含则放入list中
arr.add();
}
public class welcome
{
public static void main(String[] args)
{
int n = 33;
int[] oriNumber = new int[n];
for(int i=0; i<oriNumber.length; i++)
{
oriNumber[i] = i + 1;
}
int k = 5;
int[] resultNumber = new int[k];
Set s = new HashSet() ;
for(int i=0; i<resultNumber.length; i++)
{
s.add((int)((Math.random()*oriNumber.length)+1));
}
Iterator it = s.iterator() ;
while(it.hasNext())
{
System.out.print(it.next()+" ") ;
}
}
}
Map map=new HashMap();
while(map.size()<5){
int num=new Double(Math.random()*10).intValue();
map.put(num, num);
}
}
这样取出来的数据就是不重复的!
public static void main(String[] args) {
List list =new ArrayList();
while(list.size()<5){
int num=new Double(Math.random()*10).intValue();
if(!list.contains(num)){
list.add(num);
}
}
System.out.println(list);
}
无论放在list还是map都可以