Java产生不重复随机数方法

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

成都创新互联公司是一家专业提供隆阳企业网站建设,专注与网站设计制作、网站设计H5建站、小程序制作等业务。10年已为隆阳众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。

 
 
 
  1. import java.util.*;
  2. public class Test...{
  3.     public static void main(String[] args)...{
  4.         //生成 [0-n) 个不重复的随机数
  5.         / st 用来保存这些随机数
  6.         ArrayList list = new ArrayList();
  7.         
  8.         
  9.         int n = 10;
  10.         Random rand = new Random();
  11.         boolean[] bool = new boolean[n];
  12.         
  13.         int num =0;
  14.         
  15.         for (int i = 0; i
  16.             
  17.     
  18.             do...{
  19.                 //如果产生的数相同继续循环
  20.                 num = rand.nextInt(n);    
  21.              
  22.             }while(bool[num]);
  23.             
  24.             bool[num] =true;
  25.             
  26.             list.add(num);
  27.         
  28.         
  29.         }
  30.             
  31.     
  32.         System.out.println (list);    
  33. }        
  34.         
  35. public class Test
  36. {
  37.     public static void main(String[] args)
  38.     {
  39.         int[] arr = new int[10];
  40.         for (int i = 0; i < 10; i++)
  41.         {
  42.             arr[i] = (int) (Math.random() * 40) + 1;
  43.             for (int j = 0; j < i; j++)
  44.             {
  45.                 if (arr[j] == arr[i])
  46.                 {
  47.                     i--;
  48.                     break;
  49.                 }
  50.             }
  51.         }
  52.         for (int i = 0; i < 10; i++)
  53.             System.out.print(arr[i] + " ");
  54.     }
  55. }
  56. b.
  57. Java code
  58. import   java.util.*; 
  59. public   class   Test 
  60.         
  61.         public   static   void   main(String[]   args) 
  62.         { 
  63.                 int   n=40; 
  64.                 int[]   num   =   new   int[n]; 
  65.                 for(int   i=0;i 
  66.                         num[i]   =   i+1; 
  67.                 int[]   arr   =   new   int[10]; 
  68.                 for(int   i=0;i 
  69.                 { 
  70.                         int   r   =(int)(Math.random()*n); 
  71.                         arr[i]=num[r]; 
  72.                         num[r]=num[n-1]; 
  73.                         n--; 
  74.                 } 
  75.                 for(int   i=0;i 
  76.                         System.out.print(arr[i]+"   "); 
  77.         } 
  78. }
  79. c.
  80. Java code
  81. import   java.util.*; 
  82. public   class   Test 
  83.         
  84.         public   static   void   main(String[]   args) 
  85.         { 
  86.                 LinkedList    myList=   new   LinkedList  (); 
  87.                 int   n=40; 
  88.                 for(int   i=0;i 
  89.                         myList.add(i+1); 
  90.                 int[]   arr   =   new   int[10]; 
  91.                 for(int   i=0;i 
  92.                 { 
  93.                         arr[i]=myList.remove((int)(Math.random()*n)); 
  94.                         n--; 
  95.                 } 
  96.                 for(int   i=0;i 
  97.                 { 
  98.                         System.out.print(arr[i]+"   "); 
  99.                 } 
  100.         } 
  101. }
  102. d.
  103. Java code
  104. import   java.util.*; 
  105. public   class   Test 
  106.         
  107.         public   static   void   main(String[]   args) 
  108.         { 
  109.                 Set    mySet   =   new   LinkedHashSet  (); 
  110.                 while(mySet.size() <10) 
  111.                 { 
  112.                         mySet.add((int)(Math.random()*40+1)); 
  113.                 } 
  114.                 for(Integer   i:mySet) 
  115.                 { 
  116.                         System.out.print(i+"   "); 
  117.                 } 
  118.         } 
  119. }

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

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

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

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

分享名称:Java产生不重复随机数方法
本文地址:http://www.stwzsj.com/qtweb/news5/16155.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联