阿里笔试-从1到1000生成900个不重复的随机数并打印出来
2015-04-05 20:37
302 查看
前几天参加阿里笔试,有道程序题大意是这样的,从1到1000生成900个不重复的随机数并打印出来。当时做了好久,勉强做出来了,和大家分享一下,如果您有更好的方法,望不吝赐教。
我的思路是:
1.定义数组arr存入随机数;
2.用Arrays.binarySearch()搜索数组中是否包含新生成的的随机数;
3.不包含则将新随机数存进数组,包含则不添加;
4.Arrays.binarySearch()需要对数组排序,所以得复制一个相同的数组来排序并检测是否包含新随机数,不然最后生成的随机数就只有450个了,其余全部是0。
代码如下
如果您有任何问题,欢迎留言。
祝君好运!
我的思路是:
1.定义数组arr存入随机数;
2.用Arrays.binarySearch()搜索数组中是否包含新生成的的随机数;
3.不包含则将新随机数存进数组,包含则不添加;
4.Arrays.binarySearch()需要对数组排序,所以得复制一个相同的数组来排序并检测是否包含新随机数,不然最后生成的随机数就只有450个了,其余全部是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的随机数a Arrays.sort(arr2);//排序后才能用binarySearch()方法 int result = Arrays.binarySearch(arr2, a);// 查看数组arr2中是否有a if (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]); } }
如果您有任何问题,欢迎留言。
祝君好运!
相关文章推荐
- 从自然数1到1000中随机抽取900个不重复的数并打印出来
- java面试--(生成随机数,获取重复次数最多,并且数是最大的一个,打印出来)
- 从1到1000中随机取出900个不重复的随机数
- [置顶] 使用Set List来随机生成50个1000以内的随机数,并且不重复
- java代码实现从自然数1到1000中随机取900个不重复的数并打印
- 生成不重复随机数,int转 TCHAR 打印输出
- java使用hashset生成1-20的随机数并不重复并打印
- 生成及排序一百万个不重复的随机数,随机数范围 [0, 1000 0000)
- Java产生900个1到1000不重复的随机数
- 面试题: 随机生成1-100的100个元素的数组,并按最快的排序算法排序,并打印出来
- 用C#生成不重复的随机数
- 使用c#生成不重复的随机数
- java生成不重复的随机数
- 用C#生成不重复的随机数
- C#生成不重复的随机数
- sql server生成1000-9999之间的随机数或一个日期区间随机日期
- 生成无重复随机数的2种方法
- javascript 如何生成不重复的随机数
- 用C#生成不重复的随机数
- T-SQL生成X个不重复的Y位长度的随机数