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



在我的代码中,我们可以看到我使用random从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;
}

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

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;
}

只需将其备份到一个变量:-)

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;
}

暂时存储随机性如何?

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;
}

这就是您想要的吗?

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;
}

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

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

这就是你想要实现的吗?我本以为Sergio的答案就是你想要的,但事实并非如此。

最新更新