java 随机数不重复

package test;

import java.util.HashSet;

import java.util.Random;

public class Snippet {

/**

* 随机指定范围内N个不重复的数

* 在初始化的无重复待选数组中随机产生一个数放入结果中,

* 将待选数组被随机到的数,用待选数组(len-1)下标对应的数替换

* 然后从len-2里随机产生下一个随机数,如此类推

* @param  max  指定范围最大值

* @param  min  指定范围最小值

* @param  n  随机数个数

* @return  int[] 随机数结果集

*/

public static int[] randomArray(int min,int max,int n){

int len = max-min+1;

if(max < min || n > len){

return null;

}

//初始化给定范围的待选数组

int[] source = new int[len];

for (int i = min; i < min+len; i++){

source[i-min] = i;

}

int[] result = new int[n];

Random rd = new Random();

int index = 0;

for (int i = 0; i < result.length; i++) {

//待选数组0到(len-2)随机一个下标

int  s=rd.nextInt()%len;

//     System.out.print(s-- +",");

index = Math.abs(rd.nextInt()%len--);

//            System.out.println(index);

//将随机到的数放入结果集

result[i] = source[index];

//将待选数组中被随机到的数,用待选数组(len-1)下标对应的数替换

source[index] = source[len];

}

return result;

}

public static void main(String[] args) {

// int[] reult1 = randomCommon(20,50,10);

// for (int i : reult1) {

// System.out.println(i);

// }

int[] reult2 = randomArray(0,4,5);

for (int i : reult2) {

System.out.print(i);

}

// HashSet<Integer> set = new HashSet<Integer>();

// randomSet(20,50,10,set);

//         for (int j : set) {

//         System.out.println(j);

// }

}

}

java 随机数不重复

时间: 2024-10-29 02:46:32

java 随机数不重复的相关文章

《java入门第一季》之HashSet小案例:获取10个1至20的随机数,要求随机数不能重复

这是基于HashSet集合的唯一性. /* * 编写一个程序,获取10个1至20的随机数,要求随机数不能重复. * * 分析: * A:创建随机数对象 * B:创建一个HashSet集合 * C:判断集合的长度是不是小于10 * 是:就创建一个随机数添加 * 否:不搭理它 * D:遍历HashSet集合 */ 代码写了出来: import java.util.HashSet; import java.util.Random; public class HashSetDemo { public s

Java随机数总结

随机数在实际中使用很广泛,比如要随即生成一个固定长度的字符串.数字.或者随即生成一个不定长度的数字.或者进行一个模拟的随机选择等等.Java提供了最基本的工具,可以帮助开发者来实现这一切. 一.Java随机数的产生方式 在Java中,随机数的概念从广义上将,有三种. 1.通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字. 2.通过Math.random()返回一个0到1之间的double值. 3.通过Random类来产生一个随机数,这个是专业的Ra

【HashSet:获取10个1至20的随机数,要求随机数不能重复】

package com.yjf.esupplier.common.test; import java.util.HashSet; import java.util.Random; /** * @author shusheng * @description 获取10个1至20的随机数,要求随机数不能重复 * @Email [email protected] * @date 2018/12/17 15:33 */ public class HashSetDemo { public static vo

学习记录 java随机数的产生机制

java 随机数 一.在j2se里我们可以使用Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double,我们可以把他乘以一定的数,比如说乘以100,他就是个100以内的随机,这个在j2me中没有. 二.在java.util这个包里面提供了一个Random的类,我们可以新建一个Random的对象来产生随机数,他可以产生随机整数.随机float.随机double,随机long,这个也是我们在j2me的程序里经常用的一个取随机数的方法. 三.在我们的System类

java随机数与数组的使用。

java随机数与数组的使用.    一:题目 二 代码:  public class Students {    int number;  // 学号    int State ;   // 年级    int Score ;    // 成绩         public Students(int number, int state, int score) {        super();        this.number = number;        State = state; 

c#学习之数组 36选7随机数不重复/折半取余

内容: 数组的定义是:数据类型[] 变量名=new 数据类型[n]  变量名.Length表示数组数值长度: 36选7随机数不重复static void Main(string[] args) { int[] a = new int[7];//1)先创建一维数组 Random rand = new Random();//2)定义随机电脑生成随机数: for (int i = 0; i < 7; i++)//3)进行筛分将重复的数字去掉 { int n = rand.Next(36);//随机生成

java 随机数的生成

生成10个不小于100000的6位数 public static void main(String[] args) { Random random = new Random(); for (int i=0;i<10;i++) { System.out.println("第=="+i+"个邀请码"+(random.nextInt(899999)+100000)); } } 结果: 第==0个邀请码536686 第==1个邀请码161397 第==2个邀请码685

c# Random太快产生的随机数会重复

c# Random快速连续产生相同随机数的解决方案 Random类是一个产生伪随机数字的类,它的构造函数有两种,一个是直接New Random(),另外一个是New Random(Int32),前者是根据触发那刻的系统时间做为种子,来产生一个随机数字,后者可以自己设定触发的种子,一般都是用UnCheck((Int)DateTime.Now.Ticks)做为参数种子,因此如果计算机运行速度很快,如果触发Randm函数间隔时间很短,就有可能造成产生一样的随机数,因为伪随机的数字,在Random的内部

(转)Java随机数

1 随机数的三种产生方式 本章先讲解Java随机数的几种产生方式,然后通过示例对其进行演示. 广义上讲,Java中的随机数的有三种产生方式: (01). 通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字.(02). 通过Math.random()返回一个0到1之间的double值.(03). 通过Random类来产生一个随机数,这个是专业的Random工具类,功能强大. 1.1 第1种 通过System.currentTimeMillis()来获取