C#隨機字符串隨機性不足的解決方式

  • 1070
  • 0

摘要:C#隨機字符串隨機性不足的解決方式

这个其实不是问题,一般情况下倒是不会出问题的,代码如下:

        private string random_str(int length)
        {
            
            int number;
            string checkCode = String.Empty;
            int iSeed = 10;
            Random ro = new Random(10);
            long tick = DateTime.Now.Ticks;
            Random random = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32));
            for (int i = 0; i < length; i++)
            {
                number = random.Next();
                number = number % 36;
                if (number < 10)
                {
                    number += 48;
                }
                else
                {
                    number += 55;
                }
                checkCode += ((char)number).ToString();
            }
            return checkCode;
        }

但是如果你蛋疼一下出现这种情况就不行了

random_str(4)+random_str(4)+random_str(4)

你会发新生成的12个字符其实是3个相同的字符串,心里面无数个草泥马奔腾而过。

其实稍微加个sleep就能解决这个问题:

        private string random_str(int length)
        {
            System.Threading.Thread.Sleep(1);
            int number;
            string checkCode = String.Empty;
            int iSeed = 10;
            Random ro = new Random(10);
            long tick = DateTime.Now.Ticks;
            Random random = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32));
            for (int i = 0; i < length; i++)
            {
                number = random.Next();
                number = number % 36;
                if (number < 10)
                {
                    number += 48;
                }
                else
                {
                    number += 55;
                }
                checkCode += ((char)number).ToString();
            }
            return checkCode;
        }

本质上更接近真实的随机

 

 

------------------------------

文章的授權使用CC BY-ND2.5協議。凡是標示“轉載”的文章,均來源於網絡並儘可能標註作者。如果有侵犯您的權益,請及時聯繫刪除或者署名、授權。


Gtalk/Email: cmd4shell  [at]  gmail.com