NewHelpNeeder
NewHelpNeeder

Reputation: 693

How to get the same random number twice?

In my code we can see that I am pulling a random line from ListBox by using a random.Next. The problem is that if I want to check the same line for number of characters I'm using a new random number which causes some problems.

How can I use first random number to be used in my IF statement?

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

Upvotes: 1

Views: 500

Answers (5)

itsme86
itsme86

Reputation: 19496

If you pass a seed value to the Random() constructor, you'll get the same random values every time.

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

Is that what you're trying to accomplish? I would have thought Sergio's answer was what you're looking for, but it doesn't seem to be.

Upvotes: 0

RQDQ
RQDQ

Reputation: 15569

Is this what you're looking for?

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

Upvotes: 0

davogotland
davogotland

Reputation: 2777

how about storing the randomness temporarily?

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

Upvotes: 0

Sergio Tulentsev
Sergio Tulentsev

Reputation: 230336

Simply back it up to a variable :-)

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

Upvotes: 1

Óscar López
Óscar López

Reputation: 236004

Save the first random number in a local variable and use it later, like this:

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

Upvotes: 2

Related Questions