C#生成不重復隨機數的方法


在使用Random類生成隨機數時,我們可能會碰到生成隨機數重復的問題。

比如我們要生成6位數字驗證碼,雖然也是使用Random,但是可能出現111111,999999這樣的情況。

這是因為在實例化Random類時,如果隨機種子不填寫,默認是以時間線作為種子進行偽隨機運算,當計算運行速度過快時,導致所有的隨機種子都是一個值。

解決的方法也很簡單,我們使用Guid的哈希碼作為種子值,就不會重復了,代碼如下:

 

 1 public class RandomHelper
 2      {
 3          /// <summary>
 4          ///生成制定位數的隨機碼(數字)
 5          /// </summary>
 6          /// <param name="length"></param>
 7          /// <returns></returns>
 8          public static string GenerateRandomCode(int length)
 9          {
10              var result = new StringBuilder();
11              for (var i = 0; i < length; i++)
12              {
13                  var r = new Random(Guid.NewGuid().GetHashCode());
14                  result.Append(r.Next(0, 10));
15              }
16              return result.ToString();
17          }
18      }

 

參考:http://hovertree.com/h/bjag/ttoqk342.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM