在使用Random類生成隨機(jī)數(shù)時,我們可能會碰到生成隨機(jī)數(shù)重復(fù)的問題。
比如我們要生成6位數(shù)字驗(yàn)證碼,雖然也是使用Random,但是可能出現(xiàn)111111,999999這樣的情況。
這是因?yàn)樵趯?shí)例化Random類時,如果隨機(jī)種子不填寫,默認(rèn)是以時間線作為種子進(jìn)行偽隨機(jī)運(yùn)算,當(dāng)計(jì)算運(yùn)行速度過快時,導(dǎo)致所有的隨機(jī)種子都是一個值。
解決的方法也很簡單,我們使用Guid的哈希碼作為種子值,就不會重復(fù)了,代碼如下:
1 public class RandomHelper 2 { 3 /// <summary> 4 ///生成制定位數(shù)的隨機(jī)碼(數(shù)字) 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 }
Done.
|
新聞熱點(diǎn)
疑難解答
圖片精選