Как получить одно и то же случайное число дважды? - PullRequest
1 голос
/ 13 января 2012

В моем коде мы видим, что я вытаскиваю случайную строку из ListBox, используя random.Next.Проблема в том, что если я хочу проверить ту же строку на количество символов, я использую новое случайное число, которое вызывает некоторые проблемы.

Как я могу использовать первое случайное число, которое будет использоваться в моем операторе 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 ]

2 голосов
/ 13 января 2012

Сохраните первое случайное число в локальной переменной и используйте его позже, например:

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 голос
/ 13 января 2012

Просто скопируйте его в переменную: -)

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;
}
0 голосов
/ 13 января 2012

Если вы передадите начальное значение конструктору Random (), вы будете каждый раз получать одни и те же случайные значения.

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

Это то, что вы пытаетесь достичь?Я бы подумал, что ответ Серхио - это то, что вы ищете, но это не так.

0 голосов
/ 13 января 2012

Это то, что вы ищете?

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;
}
0 голосов
/ 13 января 2012

как насчет временного хранения случайности?

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...