为什么还是有重复的随机数??

a928721935 2017-04-06 09:12:51
public class Random10s{
public static void main(String[] args){
int a;
int[] arr = new int[10];
for(int i = 0;i<=arr.length-1;i++){
a = (int)(Math.random()*20)+1;
for(int j=0;j<=i;j++){
if(a == arr[j]){
j = 0;
a = (int)(Math.random()*20)+1;
}
}
arr[i] = a;
}
for(int j : arr){
System.out.print(j+" ");
}
}
}
本人小白,想用两个for循环来完成10个不重复随机数的生成。
...全文
157 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
我是Gaod 2017-04-06
  • 打赏
  • 举报
回复
LZ的内层循环不能用J = 0 ; 应该是J = -1 ;因为有重复项之后,J=0接着执行的是J++,才会进入内循环,也就是少了一个arr[0]的比较,所以只要有重复之后都是和第一个重复。
a928721935 2017-04-06
  • 打赏
  • 举报
回复
public class Random10s{
	public static void main(String[] args){
		int a;
		int[] arr = new int[10];
		for(int i = 0;i<=arr.length-1;i++){
			a = (int)(Math.random()*20)+1;
			for(int j=0;j<=i;j++){
				if(a == arr[j]){
					j = 0;
					a = (int)(Math.random()*20)+1;
				}
			}
			arr[i] = a;
		}
		for(int j : arr){
			System.out.print(j+" ");
		}
	} 
}
a928721935 2017-04-06
  • 打赏
  • 举报
回复
public class Random10s{ public static void main(String[] args){ int a; int[] arr = new int[10]; for(int i = 0;i<=arr.length-1;i++){ a = (int)(Math.random()*20)+1; for(int j=0;j<=i;j++){ if(a == arr[j]){ j = 0; a = (int)(Math.random()*20)+1; } } arr[i] = a; } for(int j : arr){ System.out.print(j+" "); } } }
rumlee 2017-04-06
  • 打赏
  • 举报
回复
程序写的是没啥问题的,就是可读性有点差。
a928721935 2017-04-06
  • 打赏
  • 举报
回复
引用 4 楼 lvshaoping123 的回复:
LZ的内层循环不能用J = 0 ; 应该是J = -1 ;因为有重复项之后,J=0接着执行的是J++,才会进入内循环,也就是少了一个arr[0]的比较,所以只要有重复之后都是和第一个重复。
感谢大哥!!果然如你所说

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧