最近下班时间在写一个生成用户账号的小程序(C#),生成用户密码时用到了Random类,这个类使用倒是方便,但是发现生成的密码很多是重复的,调试后发现相同的Seed生成的结果是一样的,即使是使用当前时间作为Seed也不行。看来要每次改变Seed才行,于是想到写一个类,一个静态字段作为Seed,每次生成后Seed更新下(累加1),这样每次Seed就不一样了,后来干脆取时间戳(DateTime.Now.Ticks)的后面4位整数加上Seed,调试通过,对结果进行比较,一切ok。
部分代码如下:
public class Randomization
{
//class constructor
public Randomization()
{
mSeed = 0;
}#region private
//private menbers
private static int mSeed;
private Random mRandom;//private methods
//create one random seed from mSeed and DateTime.Now.Ticks
private int CreateSeed()
{
int result = 0;string tick = DateTime.Now.Ticks.ToString();
tick = tick.Substring(tick.Length - 4, 4);
mSeed++;
result = mSeed + Convert.ToInt32(tick);return result;
}#endregion
#region public
//public methods
public int Next(int minValue, int maxValue)
{
//generate random
mRandom = new Random(CreateSeed());return mRandom.Next(minValue, maxValue);
}
#endregion
}当然了,也可以从Random类继承下,我这里只是达到了自己的使用要求,有不足之处还请大家指点。
生成多个随机数
最新推荐文章于 2024-06-15 10:44:42 发布