生成随机数

1.使用GUID19位的唯一随机数:

    /// <summary>
    /// GUID可直接转换为19位十进制数字
    /// </summary>
    /// <returns></returns>
    public static long GuidToLongID()
    {
        byte[] buffer = Guid.NewGuid().ToByteArray();
        return BitConverter.ToInt64(buffer, 0);
    } 

2.使用Random来获取指定长度重复率较低的随机数

Random在使用时,关键在于种子的制造,否则会使得在并发时生成的随机数重复率很高。

可通过一下方式获取种子

方法一:
static int GetRandomSeed()
{
  byte[] bytes = new byte[4];
  System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider();
  rng.GetBytes(bytes);
  return BitConverter.ToInt32(bytes, 0);
}

方法二:
static int GetRandomSeed()
{
  return BitConverter.ToInt32(Guid.NewGuid().ToByteArray(), 0);
}

获取定长随机数

static string  GetRandomString(int length)
{
    if (length <= 0)
        return "0";
    Random random = new Random(GetRandomSeed());
    return  random.Next(10*(length-1), 10*length).ToString();//random.next 包含最小值不包含最大值
}

3.使用随机数获取指定长度的唯一数

两种方法:
一种是GUID与定长随机数的组合
另一种是时间字符串与定长随机数的组合,为了避免时间字符串的重复,可在每次方法调用时暂停一毫秒;

Thread.Sleep(1);
int length;
var specifyLenStr= DateTime.Now.ToString("yyyyMMddHHmmssffff")+GetRandomString(length);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值