精华内容
下载资源
问答
  • java随机生成N个不重复随机数
    2022-03-20 17:38:13

    说明:

    1、默认生成随机数100以内(可以修改)

    2、默认生成5个不重复的随机数放入数组(可以修改)

    源代码如下:

    import java.util.Random;
    
    public class Text {
        public static void main(String[] args) {
            //创建随机数对象
            Random random=new Random();
            //创建一个包含5个元素的数组
            int[] arr=new int[5];
            //元素默认为-1
            for (int i = 0; i < arr.length; i++) {
                arr[i]=-1;
            }
            //下标
            int indext=0;
            while(indext<arr.length){
                //是否重复
                boolean finth=true;
                //生成一个随机数100以内可以修改
                int a=random.nextInt(101);
                //遍历数组
                for (int i = 0; i < arr.length; i++) {
                    //判断是否有重复
                    if(arr[i]==a){
                        finth=false;
                    }
                }
                //若没有重复则赋值
                if(finth){
                    arr[indext++]=a;
                }
            }
            //遍历输出
            for (int i = 0; i < arr.length; i++) {
                System.out.println(arr[i]);
            }
        }
    }

    更多相关内容
  • 主要介绍了java生成字母数字组合的随机数的示例,大家参考使用吧
  • import java.util.ArrayList; import java.util.List; public class ListDemo { public static void main(String[] args) { for(int i = 0;i<10;i++){ int num = (int)(Math.random()*10+1); System.out....

    1.使用List类型容器

    import java.util.ArrayList;
    import java.util.List;
    
    public class ListDemo {
        public static void main(String[] args) {
    
            for(int i = 0;i<10;i++){
                int num = (int)(Math.random()*10+1);
                System.out.println(num);
            }
            System.out.println("====================================");
            List<Integer> list = new ArrayList<>();
            while(true){
                int num = (int)(Math.random()*10+1);
                //判断元素是否存在
                if(!list.contains((num))){
                    list.add(num);
                }
                if(list.size()==10){
                    break;
                }
            }
            for (Integer i:list){
                System.out.println(i);
            }
        }
    }

     

    使用List类型容器生成不重复的随机数时,需要使用List自带的contains方法来判断元素是否重复。

    但是Set类型容器不允许元素重复,所以使用Set类型容器会更加简单。

    import java.util.HashSet;
    import java.util.Set;
    
    public class SetDemo {
        public static void main(String[] args) {
            Set<Integer> set = new HashSet<>();
            while (true){
                int num = (int)(Math.random()*10+1);
                set.add(num);//Set类型元素不允许有重复元素
                if(set.size()==10){
                    break;
                }
            }
            for (Integer i:set){
                System.out.println(i);
            }
    
    
    
        }
    }

    结果看到确实生成了不重复的10个元素,但是结果却是有序的。但其实HashSet类并不会提供排序功能,只是Integer类型HashCode方法是直接返回值本身,所以结果是有序的。如果生成随机数的范围和容器大小不同时可能更加符合需求。

    import java.util.HashSet;
    import java.util.Set;
    
    public class SetDemo {
        public static void main(String[] args) {
            Set<Integer> set = new HashSet<>();
            while (true){
                int num = (int)(Math.random()*10+1);
                set.add(num);//Set类型元素不允许有重复元素
                if(set.size()==5){
                    break;
                }
            }
            for (Integer i:set){
                System.out.println(i);
            }

     

    展开全文
  • (相关视频课程推荐:java视频教程)为了更好地理解这个题意,我们先来看下具体内容:生成一个1-100的随机数组,但数组中的数字重复,即位置是随机的,但数组元素重复。在这里呢,没有给我们规定数组的长度,...

    be66fcb5cc3484a17fe07d20aa075969.png

    本文给大家介绍如何在JAVA中实现随机无重复数字的功能。(相关视频课程推荐:java视频教程)

    为了更好地理解这个题意,我们先来看下具体内容:生成一个1-100的随机数组,但数组中的数字不能重复,即位置是随机的,但数组元素不能重复。

    在这里呢,没有给我们规定数组的长度,我们可以让它是1-100之间的任意长度。

    接下来让我们看一下几种实现方法并对这几种方法作个对比。

    通常我们会使用ArrayList或数组来实现,先来看下ArrayList实现过程,如下面代码所示:import java.util.ArrayList;

    import java.util.Random;

    /**

    * 使用ArrayList实现

    * @Description:

    * @File: Demo.java

    * @Date 2012-10-18 下午06:16:55

    * @Version V1.0

    */

    public class Demo {

    public static void main(String[] args) {

    Object[] values = new Object[20];

    Random random = new Random();

    ArrayList list = new ArrayList();

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

    int number = random.nextInt(100) + 1;

    if(!list.contains(number)){

    list.add(number);

    }

    }

    values = list.toArray();

    // 遍历数组并打印数据

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

    System.out.print(values[i] + "\t");

    if(( i + 1 ) % 10 == 0){

    System.out.println("\n");

    }

    }

    }

    }

    使用数组实现的过程如下所示代码:import java.util.Random;

    /**

    * 使用数组实现

    * @Description:

    * @File: Demo4.java

    * @Package None

    * @Author Hanyonglu

    * @Date 2012-10-18 下午06:27:38

    * @Version V1.0

    */

    public class Demo4 {

    public static void main(String[] args) {

    int[] values = new int[20];

    Random random = new Random();

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

    int number = random.nextInt(100) + 1;

    for(int j = 0;j <= i;j++){

    if(number != values[j]){

    values[i]=number;

    }

    }

    }

    // 遍历数组并打印数据

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

    System.out.print(values[i] + "\t");

    if(( i + 1 ) % 10 == 0){

    System.out.println("\n");

    }

    }

    }

    }

    上面这两个实现过程效率比较低的。因为在每次添加时都要去遍历一下当前列表中是否存在这个数字,时间复杂度是O(N^2)。我们可以这样思考一下:既然涉及到无重复,我们可以想一下HashSet和HashMap的功能。

    HashSet实现Set接口,Set在数学上的定义就是无重复,无次序的集合。而HashMap实现Map,也是不允许重复的Key。这样我们可以使用HashMap或HashSet来实现。

    在使用HashMap实现时,只需要将它的key转化成数组就Ok了,如下代码:import java.util.HashMap;

    import java.util.Iterator;

    import java.util.Random;

    import java.util.Map.Entry;

    /**

    * 使用HashMap实现

    * @Description:

    * @File: Demo.java

    * @Package None

    * @Author Hanyonglu

    * @Date 2012-10-18 下午06:12:50

    * @Version V1.0

    */

    public class Demo {

    public static void main(String[] args) {

    int n = 0;

    Object[] values = new Object[20];

    Random random = new Random();

    HashMap hashMap = new HashMap();

    // 生成随机数字并存入HashMap

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

    int number = random.nextInt(100) + 1;

    hashMap.put(number, i);

    }

    // 从HashMap导入数组

    values = hashMap.keySet().toArray();

    // 遍历数组并打印数据

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

    System.out.print(values[i] + "\t");

    if(( i + 1 ) % 10 == 0){

    System.out.println("\n");

    }

    }

    // Iterator iter = hashMap.entrySet().iterator();

    // // 遍历HashMap

    // while (iter.hasNext()) {

    // Entry entry = (Entry)iter.next();

    // int key = entry.getKey();

    // n++;

    //

    // System.out.print(key + "\t");

    //

    // if(n % 10 == 0){

    // System.out.println("\n");

    // }

    // }

    }

    }

    由于HashSet和HashMap的关系太近了,HashSet在底层就是用HashMap来实现的,只不过没有Value的集合,只有一个Key的集合,所以也可使用HashSet来实现,如下代码:import java.util.HashSet;

    import java.util.Random;

    /**

    * 使用HashSet实现

    * @Description:

    * @File: Test.java

    * @Package None

    * @Author Hanyonglu

    * @Date 2012-10-18 下午06:11:41

    * @Version V1.0

    */

    public class Test {

    public static void main(String[] args) {

    Random random = new Random();

    Object[] values = new Object[20];

    HashSet hashSet = new HashSet();

    // 生成随机数字并存入HashSet

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

    int number = random.nextInt(100) + 1;

    hashSet.add(number);

    }

    values = hashSet.toArray();

    // 遍历数组并打印数据

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

    System.out.print(values[i] + "\t");

    if(( i + 1 ) % 10 == 0){

    System.out.println("\n");

    }

    }

    }

    }

    这样实现效率稍微好些。如果给我们限定了数组的长度,只需要变换下for循环,设置成whlie循环就可以了。如下所示:import java.util.HashSet;

    import java.util.Random;

    /**

    * 使用HashSet实现

    * @Description:

    * @File: Test.java

    * @Package None

    * @Author Hanyonglu

    * @Date 2012-10-18 下午05:11:41

    * @Version V1.0

    */

    public class Test {

    public static void main(String[] args) {

    Random random = new Random();

    Object[] values = new Object[20];

    HashSet hashSet = new HashSet();

    // 生成随机数字并存入HashSet

    while(hashSet.size() < values.length){

    hashSet.add(random.nextInt(100) + 1);

    }

    values = hashSet.toArray();

    // 遍历数组并打印数据

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

    System.out.print(values[i] + "\t");

    if(( i + 1 ) % 10 == 0){

    System.out.println("\n");

    }

    }

    }

    }

    以上几种相比较而言,使用HashMap的效率是比较高的,其实是HashSet,再次是数组,最后是ArrayList。如果我们生成10000个数据将会发现,使用HashMap花费时间是:0.05s,HashSet是0.07s,数组是:0.20s,而ArrayList是0.25s。有兴趣的可以设置下时间查看一下。

    当然了,除了使用HashMap实现外,还有其它高效的方法。比如,我们可以把1-100这些数字存储在一个数组中,然后在for循环中随机产生两个下标,如果这两个下标不相等的话,可以交换数组中的元素,实现过程如下所示:import java.util.Random;

    /**

    * 随机调换位置实现

    * @Description:

    * @File: Demo4.java

    * @Package None

    * @Author Hanyonglu

    * @Date 2012-10-18 下午06:54:06

    * @Version V1.0

    */

    public class Demo4 {

    public static void main(String[] args) {

    int values[] = new int[100];

    int temp1,temp2,temp3;

    Random r = new Random();

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

    values[i] = i + 1;

    }

    //随机交换values.length次

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

    temp1 = Math.abs(r.nextInt()) % (values.length-1); //随机产生一个位置

    temp2 = Math.abs(r.nextInt()) % (values.length-1); //随机产生另一个位置

    if(temp1 != temp2){

    temp3 = values[temp1];

    values[temp1] = values[temp2];

    values[temp2] = temp3;

    }

    }

    // 遍历数组并打印数据

    for(int i = 0;i < 20;i++){

    System.out.print(values[i] + "\t");

    if(( i + 1 ) % 10 == 0){

    System.out.println("\n");

    }

    }

    }

    }

    更多java相关文章请关注java基础教程。

    展开全文
  • 生成不重复随机数 javajava生成随机数可以使用Math类中的方法。不随机可以使用List进行判断存储。(推荐教程:java教程 )1 . 调用java.lang下面Math类中的random()方法产生随机数新建个文件后缀名为java的文件,...

    生成不重复随机数 java

    java生成随机数可以使用Math类中的方法。不随机可以使用List进行判断存储。(推荐教程:java教程 )

    1 . 调用java.lang下面Math类中的random()方法产生随机数

    新建一个文件后缀名为java的文件,文件名取为MyRandom,该类中编写如下的代码:

    public class MyRandom {

    public static void main(String[] args) {

    int radom = (int)(Math.random()*10);

    System.out.println(radom);

    }

    }

    其中Math.random() //产生0~1之间的一个随机小数。

    产生一个0~9之间的整数为:(int)(Math.random()*10);

    产生一个1~10之间的整数则可以写着:(int)(Math.random()*10 + 1);

    以此类推:产生一个0~n之间的数就应写作:Math.random()*n;

    例如:生成一个int类型的数组,长度为50的,并向其中随即插入0-50之间的数,并且不能重复。

    2. 用List的contains方法进行重复判断

    public class MyRandom {

    public static void main(String[] args) {

    int[] intRandom = new int[50];

    List mylist = new ArrayList(); //生成数据集,用来保存随即生成数,并用于判断

    Random rd = new Random();

    while(mylist.size() < 50) {

    int num = rd.nextInt(51);

    if(!mylist.contains(num)) {

    mylist.add(num); //往集合里面添加数据。

    }

    }

    for(int i = 0;i

    intRandom[i] = (Integer)(mylist.get(i));

    }

    }

    }

    以上就是生成不重复随机数 java的详细内容,希望对你有所帮助。

    展开全文
  • Java实现生成n个不重复随机数

    千次阅读 2021-03-23 19:45:37
    本文实例为大家分享了java实现生成n个不重复随机数的具体代码,供大家参考,具体内容如下需求:根据min和max,生成n个不重复随机数。(注:范围[min,max],n <= (max - min +1))思路:0)、把从min到max的可能...
  • java 生成一组不重复随机数

    千次阅读 2016-01-18 21:10:10
    引出这个问题的是,是我在学习设计拼图游戏中出现的,拼图游戏开始的时候,图是散乱的,比如拼图游戏被分成了8*4 共32块,那么32块图对应着32个数,而若要使每次开始前的排列顺序一致,就需要产生32个随机数。...
  • 在使用Java生成随机数时,这里有两种方式: ①是使用Set的重复性,来生成的,下面我们来看代码: public class RandomTest{ public static void main(String[] args) { Set<Integer> set = new HashSet&...
  • import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Random;... // 需求:生成范围为[0,100)的10个随机数 System.out.println(getRandomNumList(10, 0, 100));
  • 主要介绍了java生成随机数(字符串)示例分享,需要的朋友可以参考下
  • public class HelloWorld { public static void main(String[] args) { Set<Integer>set=new HashSet<>();//数据不会排序 Set<Integer>treeset=new TreeSet<... while (set.size()&
  • java生成十个不重复随机数

    热门讨论 2008-11-11 09:52:15
    java生成十个不重复随机数,要求不重复
  • 解题思路:由于数组初始化时全部为0,为了区分,我们先将数组初始化为-1,然后利用循环,利用一个变量存放生成的随机数,每生成一随机数遍历此输出,如果有重复的返回重新生成。我们如何实现出现重复的数字,返回...
  • 6位数字理论上应该是100W变换,超过100w肯定是重复的 直接上代码吧: 方法: /** * 获取数组存在的6位数取件码 * @return */ private String getPickupCode(List<String> list){ String sixstr = ...
  •  * 生成一组不同的随机数  * arr{1,2,3,4,5,6}  * 比如随机生成了3 取出arr[3]=3,然后将arr{1,2,6,4,5,3} 数组模拟长度减1  * 比如随机生成了3 取出arr[3]=6,然后将arr{1,2,5,4,6,3} 数组模拟长度减1  * @...
  • [Java]不重复随机数生成简易算法

    万次阅读 多人点赞 2016-03-17 11:14:32
    java不重复随机数算法
  • 在项目中遇到客户一个需求,ID的生成策略:长度8位,用户在知道自己的ID(如:10000018)后,能通过ID来推测相关信息,如用户...生成一个装有1-99999999数值的数组 将数值内的值随机打乱 将数值的值分开保存到不同
  • php怎么生成不重复随机数php生成不重复随机数的方法:首先利用range函数创建个包含指定范围的元素的数组;然后利用shuffle函数把数组中的元素按随机顺序重新排列;最后取出数组中的段元素即可。实现原理:将数组...
  • Java随机生成一7个(1-30之间)的不重复随机数1、要求 2、代码import java.util.HashSet;import java.util.Random;import java.util.Set;/**** @author com**/public class HashSetTest {public static void main...
  • [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 不重复随机数方案2:297毫秒 但是方案1采用了slice方法,此方法重新生成数组,会大量占用内存和cpu运算, 效率很低,所以改良一下,从原始数取出个数, 然后...
  • java 产生一组不重复随机数

    千次阅读 2014-10-07 07:12:00
    产生一个随机数很简单,可以产生一组不重复随机数应该怎么做呢,今天写程序用到了这个功能。下面是几行关键的代码: [java] view plaincopy Random random = new Random ();  ...
  • 1、Random生成随机数的方法。 2、数组的遍历。 3、for循环,while循环; 、代码实现和原理 import java.util.Random; public class RandomTest01 { public static void main(String[] args) { //计数器为了记录...
  • js高效生成一组随机数不重复

    万次阅读 2019-06-27 21:03:27
    昨天做了这么个功能:在3*3的表格里面生成9个1-9的随机数,并且9个数字不重复,由于时间紧张,只简单的实现了功能,部分代码如下: //Java script语言 var nums=[]; function getNum(){ var s; do{ s=Math....
  • publicclassRandomMaker{//参数//min:随机数的最小值//max:随机数的最大值//n:生成随机数的个数//set:存放生成随机数的集合//int型也可更改为float、doublepublicvoidrandomSet(intmin,intmax,intn,HashSetset...
  • 代码如何生成不重复随机数

    千次阅读 2021-05-23 12:28:30
    C语言如何产生不重复随机数a[52]={302,303,304,305,306,307,308,309,310,311,312... 比如说随机0-8,生成一个随机8位数且数组内各项不重复; 例: intarray[8]; intarrayIndex[8]={0,0,0,0,0,0,0,0}; intk=0; sr...
  • 利用 Set 集合能存放重复元素的特性 package util; import java.util.HashSet; import java.util.Random; import java.util.Set; /** * @author ajun * Date 2021/7/14 * @version 1.0 * 工具类 */ public...
  • 1 importjava.util.HashSet;2 importjava.util.Random;34 public classGenerateRandomNumber {56 public static voidmain(String[] args) {7 //JAVA生成随机数的方式8 //①9 //int randomNumb...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,789
精华内容 6,715
关键字:

java生成一组不重复的随机数

java 订阅