using System;
using System.Security.Cryptography;
namespace CallCenter.Utility
{
public class RandString
{
#region 随机字符串,随机数
private static readonly string _LowerChar = "abcdefghijklmnopqrstuvwxyz";
private static readonly string _UpperChar = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
private static readonly string _NumberChar = "0123456789";
#region 获取种子
/**/
///
/// 使用RNGCryptoServiceProvider 做种,可以在一秒内产生的随机数重复率非常
/// 的低,对于以往使用时间做种的方法是个升级
///
///
#endregion
public static int GetNewSeed()
{
var rndBytes = new byte[4];
var rng = new RNGCryptoServiceProvider();
rng.GetBytes(rndBytes);
return BitConverter.ToInt32(rndBytes, 0);
}
#region 取得指定范围内的数字随几数
/**/
///
/// 取得指定范围内的随几数
///
/// 下限数
/// 上限数
/// int
#endregion
public static int GetRandomNumber(int startNumber, int endNumber)
{
var objRandom = new Random(GetNewSeed());
int r = objRandom.Next(startNumber, endNumber);
return r;
}
#region 获取指定 ASCII 范围内的随机字符串
/**/
///
/// 获取指定 ASCII 范围内的随机字符串
///
/// 结果字符串长度
/// 开始的ASCII值 如(33-125)中的 33
/// 结束的ASCII值 如(33-125)中的 125
///
#endregion
public static string GetRandomStringByASCII(int resultLength, int startNumber, int endNumber)
{
var objRandom = new Random(GetNewSeed());
string result = null;
for (int i = 0; i < resultLength; i++)
{
result += (char)objRandom.Next(startNumber, endNumber);
}
return result;
}
#region 从指定字符串中抽取指定长度的随机字符串
/**/
///
/// 从指定字符串中抽取指定长度的随机字符串
///
/// 源字符串
/// 待获取随机字符串长度
///
#endregion
private static string GetRandomString(string source, int resultLength)
{
var objRandom = new Random(GetNewSeed());
string result = null;
for (int i = 0; i < resultLength; i++)
{
result += source.Substring(objRandom.Next(0, source.Length), 1);
}
return result;
}
#region 获取指定长度随机的数字字符串
/**/
///
/// 获取指定长度随机的数字字符串
///
/// 待获取随机字符串长度
///
#endregion
public static string GetRandomNumberString(int resultLength)
{
return GetRandomString(_NumberChar, resultLength);
}
#region 获取指定长度随机的字母字符串(包含大小写字母)
/**/
///
/// 获取指定长度随机的字母字符串(包含大小写字母)
///
/// 待获取随机字符串长度
///
#endregion
public static string GetRandomLetterString(int resultLength)
{
return GetRandomString(_LowerChar + _UpperChar, resultLength);
}
#region 获取指定长度随机的字母+数字混和字符串(包含大小写字母)
/**/
///
/// 获取指定长度随机的字母+数字混和字符串(包含大小写字母)
///
/// 待获取随机字符串长度
///
#endregion
public static string GetRandomMixString(int resultLength)
{
return GetRandomString(_LowerChar + _UpperChar + _NumberChar, resultLength);
}
#endregion
}
}