如何在一段时间内生成相同的伪随机数??多谢

zxhmily 2011-05-08 08:31:19
如何在一段时间内生成相同的伪随机数?比如现在是2011年5月8号20点29分,按照算法生成一个伪随机数,那么在未来的一段时间假如10分钟之内,都会生成上面相同的伪随机数。请问高手如何实现??多谢
...全文
80 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
我姓区不姓区 2011-05-10
  • 打赏
  • 举报
回复

class Program
{
static void Main(string[] args)
{
System.Timers.Timer timer = new System.Timers.Timer(5000);
timer.Elapsed += (sender, e) =>
{
Program p = new Program();
Console.WriteLine(p.GetRandomNumber());
};
timer.Start();
Console.Read();
}

static DateTime dt = DateTime.Now;

static int random;

Random r = new Random();

public int GetRandomNumber()
{
TimeSpan ts = DateTime.Now - dt;
if (ts.TotalSeconds >= 20 || random == 0)//这里把ts.TotalSeconds换成ts.TotalMinutes就是分钟了
{
dt = DateTime.Now;
random = r.Next(0, (int)(dt - new DateTime(dt.Year, 1, 1)).TotalMinutes);
}
return random;
}
}
Icedmilk 2011-05-08
  • 打赏
  • 举报
回复
写个类将Random和DateTime包装一下就行了

public class RandomValueGenerater
{
public DateTime LastTime { set; get; }
public TimeSpan SameTime { set; get; }
public int LastRandomValue { set; get; }

private Random _random;

public RandomValueGenerater(TimeSpan span)
{
SameTime = span;
_random = new Random((int)DateTime.Now.Ticks);
}

public int GetNext()
{
if (DateTime.Now - LastTime > SameTime)
{
LastTime = DateTime.Now;
LastRandomValue = _random.Next();
}
return LastRandomValue;
}
}

static void Main(string[] args)
{
RandomValueGenerater r = new RandomValueGenerater(new TimeSpan(0, 0, 5));
while (true)
{
Console.WriteLine(r.GetNext());
Thread.Sleep(1000);
}
}

110,529

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧