公司需要做个密码卡的程序,产生10万条数据,并把它入库,如何实现随机产生,而且保证这10万条数据不重复?

解决方案 »

  1.   

    使用java的Random(),百度有很多例子
      

  2.   

    在数据库中建一个表,表就一个字段,设成主键,生成随机密码写进库中
    写不进的就是重复的
    一直写到count()>10W
    这不就保证不重复了
      

  3.   

    /**
     * @生成10以内的随机数
    */
    public static void main(String[] args) 
    {
         Random r=new Random();
         int[] rs=new int[10];
         int n=0;
         int result;
         for(int s=0;s<=9;s++)
         {
            while(true)
            {
            result=r.nextInt(100);
                for(n=0;n<=9;n++)
                {
                    if(result==0||(rs[n]==result))
                    {
                        break;
                    }
                
                 }
               if(n>9)
                break;
                
            }
            rs[s]=result;
            System.out.println(rs[s]);
         }
    }
      

  4.   

    我以前特意做过一点产生随机数的类,刚从以前的程序代码中摘出来一点拼凑一下应该可以应付楼主的要求了(产生100000个随机密码用了差不多2秒中):package com.mycompany.test;/**
     * @author: 忆年
     * @date: 2008-9-5 14:27:59 
     */import java.util.HashSet;
    import java.util.Random;
    import java.util.Set;public class Test1 { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub Set<String> set = cDifferentRandoms(100000, 11);  // 产生100000个长度为11的随机无重复字符串

    long startTime = System.currentTimeMillis();
    for (String str : set) {
    System.out.println(str);
    }
    long endTime = System.currentTimeMillis();

    System.out.println("Totally " + ((float)(endTime - startTime) / 1000) + " seconds used!");
    }

    public static Set<String> cDifferentRandoms(int n, int m) { // 产生n个只含有数字和字母长度为m(m<=52)的无重复随机字符串
    if (m > 52) {
    return null;
    } else {
    Set<String> set = new HashSet<String>();
    while (set.size() < n) {
    set.add(cRandom(m));
    }
    return set;
    }
    }

    public static String cRandom(int m) { // 产生1个长度为m只含有字母的随机字符串
    char[] chs = new char[m];
    for (int i = 0; i < m; i++) {
    chs[i] = cNumOrCharRandom();
    }
    return new String(chs);
    }

    public static char cNumOrCharRandom() { // 产生一个随机数字或字母
    String temp = "0123456789QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm";
    return (char) temp.charAt(iRandom(0, 61));
    }

    public static int iRandom(int m, int n) { // 产生一个[m,n)之间的随机整数
    Random random = new Random();
    int small = m > n ? n : m;
    int big = m <= n ? n : m;
    return small + random.nextInt(big - small);
    }}运算结果:
    ………………
    ………………
    yMdSBxOMUnd
    F1Vx9BlsFER
    3eajZQXcxOv
    upRVikSAou4
    J5zIHelpL82
    Uz2rqN0qk7t
    vyIct63bHNL
    qPR4kTQLUEf
    0ZBlKi2UG1X
    lcFo3TlzIyu
    jzjoFR3zF2n
    ChYWsdXG1Kc
    Wv3vIP6o4H8
    ggwnPSxtsV9
    gfGLhn0jH1t
    Totally 1.953 seconds used!
      

  5.   

    用HashMap和new Random(new Date().getTime())
      

  6.   

    生成UUID不是更好吗?
    import java.util.UUID;public class UTest {
        public static void main(String[] args) {
            UUID uuid = UUID.randomUUID();
            System.out.println(uuid);
        }
    }