zoukankan      html  css  js  c++  java
  • 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     }
  • 相关阅读:
    HDU 1058 Humble Numbers
    HDU 1421 搬寝室
    HDU 1176 免费馅饼
    七种排序算法的实现和总结
    算法纲要
    UVa401 回文词
    UVa 10361 Automatic Poetry
    UVa 537 Artificial Intelligence?
    UVa 409 Excuses, Excuses!
    UVa 10878 Decode the tape
  • 原文地址:https://www.cnblogs.com/zoujinhua/p/11477383.html
Copyright © 2011-2022 走看看