黑马程序员技术交流社区
标题:
随机生成20个1——100的随机数,不重复。
[打印本页]
作者:
Julie
时间:
2015-2-9 23:22
标题:
随机生成20个1——100的随机数,不重复。
今天捯饬了半天,也没怎成的一道题。
我的源代码是:
import java.util.Random;
public class Demo {
public static void main(String[] args) {
int[] arr = new int[20];
Random rd = new Random();
for (int i = 0; i < arr.length; i++) {
int m = rd.nextInt(100)+1;
if(i==0){arr[0] = m;}
loop:
for (int j = 0; j < arr.length-1; j++) {
if(m!=arr[j]){arr[i] = m;}
else {continue loop;}
}
System.out.print(arr[i]+" ");
}
}
}
但是这个运行还是会有重复的数字,真是气死人了……求大神指导!
作者:
play1369
时间:
2015-2-9 23:48
本帖最后由 play1369 于 2015-2-9 23:55 编辑
for (int i = 0; i < arr.length; i++) {
arr
= rd.nextInt(100)+1;
for (int j = 0; j < i; j++) {
if(i==0){continue;}
else
{
if(arr
==arr[j])
{
i--;
break;
}
}
}
作者:
play1369
时间:
2015-2-9 23:51
不过最好用Set集合做,循环条件是size()小于20
作者:
ziyu0971
时间:
2015-2-10 12:33
这是入学考试题吧,应该使用Random生成随机数,把随机数存到不能重复元素的set集合中就可以了哦。
作者:
鲍阳
时间:
2015-2-15 10:26
mark一下,以后再看
作者:
qiuyuhuaihua
时间:
2015-2-15 12:25
首先生成一个有序的1到100的数组array,然后从下标0开始遍历数组,设当前下标为i,每次遍历时生成一个0到99的整数,假设以randIndex来代替,将array[i] 和array[randIndex]的值交换。这样总共要进行一百次生成随机整数以及交换,最后在这个数组中任取20个数字就可以了(随意你怎么取,连续的,不连续的,只要你保证下标不重复就行,一定别用随机数Random了)。
作者:
chensc
时间:
2015-2-17 16:52
学习学习!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2