阿里笔试-从1到1000生成900个不重复的随机数并打印出来
来源:互联网 发布:朱炫大师兄 知乎 编辑:程序博客网 时间:2024/05/19 23:59
前几天参加阿里笔试,有道程序题大意是这样的,从1到1000生成900个不重复的随机数并打印出来。当时做了好久,勉强做出来了,和大家分享一下,如果您有更好的方法,望不吝赐教。
我的思路是:
1.定义数组arr存入随机数;
2.用Arrays.binarySearch()搜索数组中是否包含新生成的的随机数;
3.不包含则将新随机数存进数组,包含则不添加;
4.Arrays.binarySearch()需要对数组排序,所以得复制一个相同的数组(一个素组亦可)来排序并检测是否包含新随机数,不然最后生成的随机数就只有450个(不足900个)了,其余全部是0。这里重点是要排序。
代码如下
import java.util.*;public class test1 {public static void main(String[] args) {int[] arr = new int[900];// 创建2个数组int[] arr2=new int[900];for (int i = 899; i >=0; i--) {int a = (int) ((Math.random()) * 1001);// 生成1到1000的随机数aArrays.sort(arr2);//排序后才能用binarySearch()方法int result = Arrays.binarySearch(arr2, a);// 查看数组arr2中是否有aif (result < 0) {// 没有a就把a加入数组arr[i] = a;arr2[i]=a;} else// 有a就把i加1,使i值不变i++;}for (int i = 0; i < 900; i++)System.out.println("第" + (i + 1) + "个: " + arr[i]);}}
此题用Map或者HashSet更佳!
如果您有任何问题,欢迎留言。
祝君好运!
0 0
- 阿里笔试-从1到1000生成900个不重复的随机数并打印出来
- 从自然数1到1000中随机抽取900个不重复的数并打印出来
- java代码实现从自然数1到1000中随机取900个不重复的数并打印
- Golang:生成n个从a到b不重复的随机数
- 生成5个不重复的随机数
- 生成N个不重复的随机数
- 生成N个不重复的随机数
- Java产生900个1到1000不重复的随机数
- 生成20个1-100不重复的随机数
- C#随机生成规定个不重复的随机数,并排序
- 产生n个,从n到n的 不重复随机数集合
- 生成及排序一百万个不重复的随机数,随机数范围 [0, 1000 0000)
- 生成1-100不重复的随机数
- java使用hashset生成1-20的随机数并不重复并打印
- 生成不重复的随机数
- 生成不重复的随机数
- 生成不重复的随机数
- 生成不重复的随机数
- CodeForces 30C — Shooting Gallery
- Cocos2d-JS使用CocosDenshion引擎
- Linux 多线程-基本概念
- wamp中Apache多站点配置,Forbidden解决
- mysql数据库中的数据类型
- 阿里笔试-从1到1000生成900个不重复的随机数并打印出来
- Eclipse快捷键ctrl shift down 失效
- adb 连接天天模拟器端口5037被占用问题的解决
- 算法--八皇后问题
- 22. PHP 变量范围
- Uva 10305 拓扑排序
- c++内存池
- 表的创建,查看、修改与删除
- 凸包算法分析