熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

c#生成無重復的驗證碼

2013-11-13 09:46:27  來源: .NET編程 

  最近公司項目做了代金卷的業余需要生成隨機的位數字字母組合的條碼現貼出種程序源碼供大家學習和參考

  方法

  private static char[] constant = { a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z }public string pxkt_GetCharFont(int strLength)

  { SystemTextStringBuilder newRandom = new SystemTextStringBuilder(Random rd = new Random(GuidNewGuid()GetHashCode())//保證生成的隨機字符永遠不重復

  // Random rd= new Random() //不能寫成這樣數目小的條左右沒問題多了就會有很多重復for (int i = i < strLength i++)

  { newRandomAppend(constant[rdNext()])} return newRandomToString()}方法

  public string RandomNum(int n) // { //定義一個包括數字大寫英文字母和小寫英文字母的字符串string strchar = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz//將strchar字符串轉化為數組//StringSplit 方法返回包含此實例中的子字符串(由指定Char數組的元素分隔)的 String 數組

  string[] VcArray = strcharSplit(string VNum = //記錄上次隨機數值盡量避免產生幾個一樣的隨機數int temp = //采用一個簡單的算法以保證生成隨機數的不同Random rd = new Random(GuidNewGuid()GetHashCode())//保證生成的隨機字符永遠不重復

  // Random rd= new Random() //不能寫成這樣數目小的條左右沒問題多了就會有很多重復for (int i = i < n + i++)

  { if (temp !=

  { //unchecked 關鍵字用於取消整型算術運算和轉換的溢出檢查

  //DateTimeTicks 屬性獲取表示此實例的日期和時間的刻度數

  rand = new Random(i * temp * unchecked((int)DateTimeNowTicks))} //RandomNext 方法返回一個小於所指定最大值的非負隨機數

  int t = randNext(if (temp != && temp == t)

  { return RandomNum(n)} temp = tVNum += VcArray[t]} return VNum//返回生成的隨機數}

  }


From:http://tw.wingwit.com/Article/program/net/201311/11548.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.