`
zwh910621
  • 浏览: 146675 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java产生不重复随机数方法

    博客分类:
  • Java
阅读更多

关于生成Java不重复的随机数:

import java.util.*;  
public class Test...{  
    public static void main(String[] args)...{  
        //生成 [0-n) 个不重复的随机数  
        / st 用来保存这些随机数  
        ArrayList list = new ArrayList();  
          
          
        int n = 10;  
        Random rand = new Random();  
        boolean[] bool = new boolean[n];  
          
        int num =0;  
          
        for (int i = 0; i<n; i++)...{  
              
      
            do...{  
                //如果产生的数相同继续循环  
                num = rand.nextInt(n);      
               
            }while(bool[num]);  
              
            bool[num] =true;  
              
            list.add(num);  
          
          
        }  
              
      
        System.out.println (list);      
}          
          
 
 
public class Test  
{  
 
    public static void main(String[] args)  
    {  
        int[] arr = new int[10];  
 
        for (int i = 0; i < 10; i++)  
        {  
            arr[i] = (int) (Math.random() * 40) + 1;  
            for (int j = 0; j < i; j++)  
            {  
                if (arr[j] == arr[i])  
                {  
                    i--;  
                    break;  
                }  
            }  
        }  
        for (int i = 0; i < 10; i++)  
            System.out.print(arr[i] + " ");  
    }  
}  
 
 
b.  
 
Java code  
 
 
import   java.util.*;   
public   class   Test   
{   
          
        public   static   void   main(String[]   args)   
        {   
                int   n=40;   
                int[]   num   =   new   int[n];   
                for(int   i=0;i <num.length;i++)   
                        num[i]   =   i+1;   
                int[]   arr   =   new   int[10];   
                for(int   i=0;i <arr.length;i++)   
                {   
                        int   r   =(int)(Math.random()*n);   
                        arr[i]=num[r];   
                        num[r]=num[n-1];   
                        n--;   
                }   
                for(int   i=0;i <arr.length;i++)   
                        System.out.print(arr[i]+"   ");   
        }   
}  
 
 
 
c.  
 
Java code  
 
 
import   java.util.*;   
public   class   Test   
{   
          
        public   static   void   main(String[]   args)   
        {   
                LinkedList <Integer>   myList=   new   LinkedList <Integer> ();   
                int   n=40;   
                for(int   i=0;i <n;i++)   
                        myList.add(i+1);   
                int[]   arr   =   new   int[10];   
                for(int   i=0;i <arr.length;i++)   
                {   
                        arr[i]=myList.remove((int)(Math.random()*n));   
                        n--;   
                }   
                for(int   i=0;i <arr.length;i++)   
                {   
                        System.out.print(arr[i]+"   ");   
                }   
        }   
}  
 
 
 
d.  
 
Java code  
 
 
import   java.util.*;   
public   class   Test   
{   
          
        public   static   void   main(String[]   args)   
        {   
                Set <Integer>   mySet   =   new   LinkedHashSet <Integer> ();   
                while(mySet.size() <10)   
                {   
                        mySet.add((int)(Math.random()*40+1));   
                }   
                for(Integer   i:mySet)   
                {   
                        System.out.print(i+"   ");   
                }   
        }   
}  

 

 

方法一:
在一个待选数组中随机产生一个数,然后把他放到待选数组的最后,然后从length-1里随机产生下一个随机数,如此类推

public static int[] randoms()  
{  
Random r = new Random();  
 
int temp1,temp2;  
int send[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21};  
int len = send.length;  
int returnValue[] = new int[22];  
for(int i=0;i<22;i++)  
{  
temp1 = Math.abs(r.nextInt())% len;  
returnValue[i] = send[temp1];  
temp2 = send[temp1];  
send[temp1] = send[len-1];  
send[len-1] = temp2;  
len--;  
}  
return returnValue;  
}  
} 
 方法二:

还是一个固定的无重复的数组,然后把这个数组随机调换位置,多次之后这个数组就是一个无重复的随机数组了。

public static int[] random2()  
{  
   int send[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21};  
   int temp1,temp2,temp3;  
   Random r = new Random();  
   for(int i=0;i<send.length;i++) //随机交换send.length次  
   {  
    temp1 = Math.abs(r.nextInt())%(send.length-1); //随机产生一个位置  
    temp2 = Math.abs(r.nextInt())%(send.length-1); //随机产生另一个位置  
    if(temp1 != temp2)  
    {  
     temp3 = send[temp1];  
     send[temp1] = send[temp2];  
     send[temp2] = temp3;  
    }  
   }  
   return send;  
}  
 
分享到:
评论

相关推荐

    Java 产生不重复随机数四种方法

    在Java编程中,生成不重复随机数是一项常见的需求,特别是在模拟抽奖、随机选取样本或创建唯一标识符等场景。本文将详细介绍四种不同的方法来实现这一功能。 ### 方法一:使用HashSet **HashSet** 是Java集合框架...

    自己写的java产生不重复随机数

    直接运行main即可,参数为数字范围 比如10 运行后会输出9,3,0,7,2,8,4,1,5,6,

    java产生不重复的随机数

    java代码产生不重复的随机数,有用处,可以参考!

    java生成十个不重复的随机数

    在Java编程中,生成十个不...以上就是使用Java生成十个不重复随机数的两种主要方法。无论选择哪种方式,都需要根据具体需求和性能要求进行权衡。在实际开发中,理解这些算法背后的逻辑和可能的优化方向是至关重要的。

    取不重复随机数.rar

    生成不重复随机数的方法有很多种,以下是一些基本策略: 1. **基本随机数生成**: 在编程中,我们通常使用内置的随机数生成函数,如Python的`random`模块或Java的`Random`类。首先,我们需要设定一个范围,比如0到...

    Java生成不重复的任意位随机数

    巧用Java实现得到任意位永不重复的随机数,很经典的代码!

    java 不重复的随机数序列

    在Java编程语言中,生成不重复的随机数序列是一个常见...通过以上讨论,我们可以了解到在Java中生成不重复随机数序列的多种方法,以及如何根据需求进行排序。实际开发中,选择哪种方法取决于具体的应用场景和性能要求。

    Java中不重复随机数的生成与分析.pdf

    Java中不重复随机数的生成与分析 Java 中不重复随机数的生成与分析是软件开发中的一个重要问题。随机数以其不确定性和偶然性等特点,因此在软件开发中得到了广泛应用。例如,在软件系统的测试中,用于产生具有普遍...

    hashset产生不重复随机数

    利用hashset产生不重复随机数的函数,附含测试数据; 调用方法 int[] arr=noDup(max,num),max为最大的数,num为要产生的随机数个数

    产生不重复随机数算法

    本文将深入探讨一种在Java中实现的高效算法,该算法能够生成指定范围内的不重复随机数数组,特别适用于随机组题等应用场景。 ### 核心知识点解析 #### 1. 算法原理 算法的核心思想是首先创建一个包含指定范围内...

    生成指定随机数不重复的例子(可用)

    总结来说,这个例子提供了一种在Java中生成指定范围内不重复随机数的方法,通过结合`Random`类和集合数据结构实现。在myEclipse环境下,只需几步简单操作,即可运行并测试这段代码。对于开发者来说,理解和掌握这种...

    生成不重复随机数的算法

    Fisher-Yates洗牌算法是一种有效的生成不重复随机数的方法。它通过对数组进行随机交换来达到目的。 **示例代码**: ```java import java.util.*; public class Test { public static void main(String[] args) { ...

    Java实现生成n个不重复的随机数

    下面将详细介绍Java实现生成n个不重复的随机数的方法。 首先,我们需要理解生成随机数的原理。生成随机数可以使用Java的Random类,通过nextInt()方法可以生成一个随机数。但是,这种方法生成的随机数可能会重复。...

    javascript获取不重复的随机数的方法比较

    [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 不重复的随机数方案2:297毫秒 但是方案1采用了slice方法,此方法重新生成数组,会大量占用内存和cpu运算, 效率很低,所以改良一下,从原始数组取出一个数, 然后...

    0-99的不重复随机数

    这个标题"0-99的不重复随机数"表明我们要讨论的是如何利用编程语言生成一个包含0到99所有整数且每个数只出现一次的随机序列。 描述中提到“代码很精简”,这可能是指实现该功能的代码行数较少,易于理解和实现。...

    数组放不重复的随机数

    ### 数组存放不重复随机数实现方法 #### 背景与目标 在日常的编程实践中,有时我们需要生成一系列不重复的随机数,并将这些数字存储到数组中以供后续处理使用。例如,在彩票系统中,为了模拟双色球等类型的彩票...

    Java产生随机数的两种方式

    本文将详细探讨Java中生成随机数的两种主要方法:`java.lang.Math.random()`静态方法和`java.util.Random`类。 首先,我们来看`java.lang.Math.random()`方法。这是一个静态方法,不需要实例化对象就可以直接调用。...

    介绍java 产生随机数式

    - 对于更复杂的需求,例如产生符合特定概率分布的随机数(如正态分布、泊松分布等),可以使用Apache Commons Math库或Java 8引入的`java.util.stream.DoubleStream`配合`IntStream`生成。 总的来说,Java的`...

    随机产生8位无重复数

    2. **去除重复**:为了确保生成的随机数不重复,可以使用HashSet或数据库来存储已经生成过的随机数,每次生成新数时,都会先检查该数是否已存在,如果不存在则添加并返回,否则继续生成新的随机数。 3. **数据库...

    java产生随机数的几种方式

    `Random` 类的 `nextInt(int bound)` 方法允许你指定生成随机数的上限(不包括)。若需包含0,可以稍微调整代码: ```java Random rand = new Random(); int randomInt = rand.nextInt(101); // 包含0和100 ``...

Global site tag (gtag.js) - Google Analytics