如何获得两次相同的随机数?

时间:2012-01-13 03:02:48

标签: c# winforms random

在我的代码中,我们可以看到我使用random.Next从ListBox中拉出一个随机行。问题是,如果我想检查同一行的字符数,我正在使用一个新的随机数,这会导致一些问题。

如何在IF语句中使用第一个随机数?

SendKeys.Send(lbMessage.Items[random.Next(lbMessage.Items.Count)].
    ToString().Substring(currentChar++, 1));

if (currentChar == lbMessage.Items[random.Next(lbMessage.Items.Count)].ToString().Length)
{
    SendKeys.Send("{enter}");
    tmrSpace.Enabled = false;
    currentChar = 0;
}

5 个答案:

答案 0 :(得分:2)

将第一个随机数保存在局部变量中,稍后再使用,如下所示:

int ran = random.Next(lbMessage.Items.Count);
SendKeys.Send(lbMessage.Items[ran].ToString().Substring(currentChar++, 1));

if (currentChar == lbMessage.Items[ran].ToString().Length) {
    SendKeys.Send("{enter}");
    tmrSpace.Enabled = false;
    currentChar = 0;
}

答案 1 :(得分:1)

简单地将其备份到变量: - )

var rnd = random.Next(lbMessage.Items.Count);
SendKeys.Send(lbMessage.Items[rnd].
    ToString().Substring(currentChar++, 1));

if (currentChar == lbMessage.Items[rnd].ToString().Length)
{
    SendKeys.Send("{enter}");
    tmrSpace.Enabled = false;
    currentChar = 0;
}

答案 2 :(得分:0)

暂时存储随机性怎么样?

int randomness = random.Next(lbMessage.Items.Count);
SendKeys.Send(lbMessage.Items[randomness].ToString().Substring(currentChar++, 1));

if (currentChar == lbMessage.Items[randomness].ToString().Length)
{
    SendKeys.Send("{enter}");
    tmrSpace.Enabled = false;
    currentChar = 0;
}

答案 3 :(得分:0)

这是你要找的吗?

int index = random.Next(lbMessage.Items.Count);

string value = lbMessage.Items[index].ToString(); 

SendKeys.Send(value.Substring(currentChar++, 1));

if (currentChar == value.Length)
{
    SendKeys.Send("{enter}");
    tmrSpace.Enabled = false;
    currentChar = 0;
}

答案 4 :(得分:0)

如果将种子值传递给Random()构造函数,则每次都会得到相同的随机值。

Random random = new Random(86);  // Seed can be any Int32 value

这是你想要完成的吗?我原以为塞尔吉奥的回答是你正在寻找的,但似乎并不是。