`

生成不重复的随机数

阅读更多
/**
	 * 产生total个0-max的不重复随机数
	 * @param total
	 * @param max
	 */
	private int[] generateRam(int total, int max){
		int[] arr = new int[total];     
        for (int i=0; i<total; i++)     
        {     
            arr[i] = (int)(Math.random()*(max+1));     
            for (int j = 0; j < i; j++){     
                if (arr[j] == arr[i]){     
                    i--;     
                    break;     
                }     
            }     
        }     
        for (int i = 0; i < total; i++)     
            System.out.print(arr[i] + " ");
		return arr;  
	}



public class Test   
{   
  
  // 产生20个0-30的不重复随机数
  public static void main(String[] args)   
    {   
	int total = 20;
	int max = 30;
        int[] arr = new int[total];   
        for (int i=0; i<total; i++)   
        {   
            arr[i] = (int)(Math.random()*(max+1));   
            for (int j = 0; j < i; j++){   
                if (arr[j] == arr[i]){   
                    i--;   
                    break;   
                }   
            }   
        }   
        for (int i = 0; i < total; 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+"   ");    
                }    
        }    
  
}  

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+"   "); 
                } 
        } 

} 

Java代码 
第一种方法,在一个待选数组中随机产生一个数,然后把他放到待选数组的最后,然后从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;   
}  
分享到:
评论

相关推荐

    易语言取不重复随机数

    在易语言中,生成不重复随机数是一项常见的需求,特别是在游戏开发、数据分析或者算法设计等场景。本文将深入探讨如何在易语言中实现取不重复随机数的功能。 首先,我们需要了解易语言中的随机数生成函数。在易语言...

    VB生成不重复的随机数

    根据提供的标题、描述以及部分代码内容,我们可以总结出在Visual Basic (简称VB)环境中生成不重复随机数的主要方法。此技术常用于各种场景,比如彩票系统、抽奖程序或需要无重复随机选择的应用。 ### 一、基本原理 ...

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

    在编程领域,生成指定范围内的随机数而不重复是一项常见的需求,尤其在抽奖系统、密码生成或者数据模拟等场景。...对于开发者来说,理解和掌握这种技巧有助于解决各种需要生成不重复随机数的问题。

    生成不重复随机数的算法

    ### 生成不重复随机数的算法 在许多应用领域中,比如在线考试系统、游戏开发或是数据处理等场景,生成不重复的随机数是一项非常重要的技术。本文将详细介绍几种不同的方法来实现这一功能,并通过具体的Java代码示例...

    VBA生成不重复的随机数源码.txt

    VBA生成不重复的随机数源码.txt

    取不重复随机数.rar

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

    易语言取不重复随机数.rar

    在“易语言取不重复随机数.rar”这个压缩包中,我们可以找到关于如何在易语言中生成不重复随机数的相关教程或源代码。 在编程中,生成随机数是一项常见的任务,特别是在游戏、模拟、加密等领域。而在易语言中,生成...

    VB.NET生成不重复的随机数

    在VB.NET编程环境中,生成不重复的随机数是一项常见的需求,尤其在进行模拟、测试或者游戏开发时。这里我们将深入探讨如何实现这个功能,并提供一个详细的步骤解释。 首先,我们需要了解VB.NET中的Random类,它是...

    快速生成特定区间内的不重复随机数(随机打乱区间元素顺序)

    首先,我们要明确一点:生成不重复随机数的关键在于避免重复。对于一个给定的区间,例如[0, n),其中n是该区间的上限,我们需要生成n个不同的随机数。传统的做法可能包括使用数组或集合来跟踪已经生成过的随机数,但...

    C#产生不重复的随机数

    第三种方法涉及递归函数,用于生成指定范围内的不重复随机数。核心逻辑如下: 1. 初始化一个`Random`实例,用于生成随机数。 2. 创建一个整型数组`arrNum`,用于存储生成的随机数。 3. 在循环中,调用`getNum`函数...

    产生1到N的不重复随机数

    所以,生成不重复随机数序列的代码可能如下: ```python import random def generate_unique_randoms(N): numbers = list(range(1, N + 1)) random.shuffle(numbers) return numbers ``` 上述方法虽然简单,但...

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

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

    C#生成不重复随机数列表实例

    这种方法虽然简单直观,但在大量生成不重复随机数时可能会效率较低,因为每次生成都需要检查整个列表。在处理大数据量的情况下,可以考虑使用其他更高效的算法,如使用`HashSet`或`Dictionary`来存储已生成的随机数...

    python生成不重复随机数和对list乱序的解决方法

    首先,生成不重复随机数的方法。Python的`random`模块提供了`sample`函数,它可以从一个列表或序列中随机抽取指定数量的不重复元素。例如,如果你有一个列表`list = [12, 23, 13, 14, 78, 234, 123, 12345]`,想要...

    ASP生成随机数 ASP生成不重复随机数

    ASP不重复随机数:方法一: 已测使用的时候需要注意里面的分割字符串的字符。 代码如下: &lt;&#37; ‘生成的是一个不重复的数组 Function GetRnd(lowerNum,upperNum) Dim unit,RndNum,Fun_X unit = upperNum – ...

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

    但要生成不重复的随机数,我们不能简单地连续调用`nextInt()`,因为这可能导致重复。一种有效的方法是使用`HashSet`,因为它不允许存储重复元素。 以下是一个简单的示例代码,展示了如何生成十个不重复的随机数: ...

    .NET生成不重复的随机数

    这段代码会打印出1到10之间的不重复随机数。 值得注意的是,这种方法虽然简单,但当需要生成的随机数数量非常大时(如百万级别),性能可能会成为问题,因为频繁地在集合中添加和删除元素会有一定的开销。在这种...

    PHP生成不重复随机数的方法汇总

    PHP编程中生成不重复随机数是一个常见的需求,尤其在需要随机抽取样本或者在游戏开发中生成不重复的卡片、...同时,我们鼓励更多的开发者分享自己独特的生成不重复随机数的方法,让整个社区的技术水平都能够得到提升。

Global site tag (gtag.js) - Google Analytics