java向一数组中随机插入1-33的自然数(无重复)

Hi,all 2018-06-24 10:20:26
JAVA是一门优秀的语言,我热爱它。

一路走来,人是有记忆遗忘周期的,回过头来搞了一下基础逻辑思想问题,却让自己陷入了凌乱中。好歹是搞出来了,不然也太丢人了。

算法分析:

1.生成随机数可以使用库函数rand();

2.将生成的随机数保存到数组中

3.在每次生成新的随机数,遍历已经存在的随机数,如果重复则放弃,重新生成。

代码实现:
public class Demo {
public static void main(String[] args) {
int[] redList = new int[6];
for (int i=0;i<redList.length;i++) {
int numRed = (int) (Math.random()*32)+1;
//当i=0时向数组添加第一个随机数
redList[i] = numRed;
for (int j=0;j<i;j++) {
//比较数组中是否有重复的随机数
if (redList[i] == redList[j]) {
//如果有重复的数字重新生成随机数存入数组,再次比较
i--;
break;
}
}
}
//打印数组中的数据
for (int j = 0; j < redList.length; j++) {
System.out.print(redList[j]+" ");
}
}
}
...全文
361 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
stacksoverflow 2018-06-25
  • 打赏
  • 举报
回复
因为存储的随机数不需要排序,用HashSet这种数据结构是不是更好一些?这样查看重复随机数就不用每次遍历集合了,时间复杂度O(1)即可完成查看重复的工作。
另外假设如果需要生成的随机数个数为33的时候,那么程序越到最后将会运行越慢。因为你要不断循环直到命中最后一个指定数字。
a1213467 2018-06-25
  • 打赏
  • 举报
回复
因为是不重复的数据其实可以这样写,先准备好33个数,每次随机取出一个
List<Integer> list = new ArrayList<Integer>();
for(int i=1;i<=33;i++){
list.add(i);
}
int[] redList = new int[6];
for(int i=0;i<redList.length;i++){
int rand = Math.random()*list.size();
redList[i] = list.get(rand);
list.remove(rand);
}
八位比特 2018-06-24
  • 打赏
  • 举报
回复
把变得当做形参,不变的放在方法里是个良好的编程习惯

50,595

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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