从1到1000中随机取出900个不重复的随机数
2015-04-02 23:29
423 查看
思路
用大小为1000的数组保存1-1000的整数,int nums[1000] = {1,2,3,...1000}。
使用Random.nextInt()获取[0,999]下标值,即index = Random.nextInt(1000),交换坐标为0和index的值
在使用Random.nextInt()获取[0,999]下标值,即index = Random.nextInt(1000),交换坐标为1和index的值
...
在使用Random.nextInt()获取[0,999]下标值,即index = Random.nextInt(1000),交换坐标为899和index的值
最后[0-899]保存的即为900个1-900
用大小为1000的数组保存1-1000的整数,int nums[1000] = {1,2,3,...1000}。
使用Random.nextInt()获取[0,999]下标值,即index = Random.nextInt(1000),交换坐标为0和index的值
在使用Random.nextInt()获取[0,999]下标值,即index = Random.nextInt(1000),交换坐标为1和index的值
...
在使用Random.nextInt()获取[0,999]下标值,即index = Random.nextInt(1000),交换坐标为899和index的值
最后[0-899]保存的即为900个1-900
import java.util.Random; public class RandomNums { /** * 从整数min~max中获取n个随机整数 * @param min 随机整数最小值 * @param max 随机整数最大值 * @param n 随机数个数 * @return 随机产生的n个整数 */ public void getRandomNums(int min, int max, int n){ int length = max - min + 1; if(max < min || n > length) return; //将范围min~max范围的整数放到数组中 int nums[] = new int[length]; for(int i = min; i <= max; i++){ nums[i - min] = i; }//for Random random = new Random(); for(int i = 0; i < n;i++){ int index = random.nextInt(max); //随机产生一个数组下标 exchange(nums, i, index); //0~n-1存放n个随机数 }//for for(int i = 0; i < n; i++) System.out.println(nums[i]); } /** * 交换数组中两个元素的值 * @param nums * @param i * @param j */ public void exchange(int nums[], int i, int j){ int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; } public static void main(String args[]){ RandomNums randomNums = new RandomNums(); randomNums.getRandomNums(1, 1000, 900); } }
相关文章推荐
- 经典算法题随机从连续的100个不重复数中取出100个不重复随机数
- java代码实现从自然数1到1000中随机取900个不重复的数并打印
- [置顶] 使用Set List来随机生成50个1000以内的随机数,并且不重复
- 阿里笔试-从1到1000生成900个不重复的随机数并打印出来
- 经典算法题随机从连续的100个不重复数中取出100个不重复随机数
- Java产生900个1到1000不重复的随机数
- 从自然数1到1000中随机抽取900个不重复的数并打印出来
- JAVA随机数之多种方法从给定范围内随机N个不重复数
- 随机产生20个正整数存入数组a中,且每个数均在1000-9999之间(包含1000和9999)。对数组进行排序,要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数放入数组b中,如
- 用MySQL里的Rand()生成 不连续重复 的随机数年龄以及随机姓名字符串
- 随机给定10个小于10的数字(出现的数字可能重复),从其中取出3个各不相同的数字可组合出多个不同的3位数,请输出这些3位数中最大的那个3位数
- 简单php中随机取出数组中不重复的值
- 随机不重复排序算法及Java产生随机数的3种方式
- [转]sql server生成1000-9999之间的随机数或一个日期区间随机日期
- 随机生成不重复随机数
- 随机给定10个小于10的数字(出现的数字可能重复),从其中取出3个各不相同的数字可组合出多个不同的3位数,请输出这些3位数中最大的那个3位数
- JS 在指定数组中随机取出N个不重复的数据
- 从0~100之间随机取出不重复的10个数
- <AJJL004>随机10个数,取出5个最小值,从小到大排列(需考虑出现重复数的情况)
- 生产N个不重复的随机数(从一个数组中随机取N个元素)