zoukankan      html  css  js  c++  java
  • 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;
    }

    本质上更接近真实的随机

  • 相关阅读:
    docker学习及应用
    openstack入门及应用
    C# 值类型,引用类型区别
    C# 继承
    Unity 使用Plugins接入安卓SDK 基础篇
    详谈 Unity3D AssetBundle 资源加载,结合实际项目开发实例
    Unity3D 协程 浅谈
    《俄罗斯,有点意思》
    老男孩之《生日快乐》
    【诗歌系列】《神曲》
  • 原文地址:https://www.cnblogs.com/MaxIE/p/2916282.html
Copyright © 2011-2022 走看看