【发布时间】:2015-03-28 20:20:30
【问题描述】:
我有一个点击按钮的计时器,无论计时器的速度如何,由于Random 与时钟有某种关联,因此无论速度如何,结果都是可预测的。
我一直在阅读并了解到,当初始化一个新的Random 时,它是通过系统时间完成的,这就解释了为什么我会遇到这个问题。
这是我所拥有的:
int win = 0;
int lose = 0;
private void button1_Click(object sender, EventArgs e)
{
Random rn = new Random();
int rnu = rn.Next(2);
if (rnu == 0)
win++;
if (rnu == 1)
lose++;
string winmsg = "Wins: " + win.ToString();
string losemsg = "Losses: " + lose.ToString();
winlbl.Text = winmsg;
loselbl.Text = losemsg;
timer1.Start();
}
然后是计时器:
private void timer1_Tick(object sender, EventArgs e)
{
button1.PerformClick(); //interval 500, but always predictable.
}
我的目标是尝试创建一个更“随机”的结果 - 一个计时器控件无法预测的结果。但是,我无法修改计时器的速度;它必须在循环中保持不变。
我尝试停止计时器并重新启动,但即便如此,它仍会继续进行可预测的行为。
有没有人知道解决这个问题的方法或某种“技巧”?还是这是一些 C# Random 限制?
【问题讨论】: