2012-01-13 10 views
1

私のコードでは、random.Nextを使用してListBoxからランダムな線を引っ張っていることがわかります。問題は、同じ行にいくつかの問題を引き起こす新しい乱数を使用している文字の数をチェックしたい場合です。同じ乱数を2回取得する方法は?

IF文で最初の乱数を使用するにはどうすればよいですか?

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

同じ番号を取得する方法が分かっている場合は、ランダムではありません。 – Maheep

答えて

2

保存ローカル変数の最初の乱数と、後でそれを使用し、ランダム性を一時的に保存しますか?

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

しかし、変数が再度呼び出された場合、ランダムな変更はしませんか?私はこれを試して、それは新しいランダムなシードを生成するようです。 – NewHelpNeeder

+0

次に、生成された乱数をコードのどこかに保存する必要があります。変更されないことが確実です。 –

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

これも新しいランダムを生成するようです。私はこれを試みましたが、種子は変化するようです。 – NewHelpNeeder

+0

いいえ、何か間違っている必要があります。 'rnd'は2行目と3行目で同じになります。 –

+0

@NewHelpNeeder - これは乱数を(最初の行で)一度生成し、それを送信キーとif文で再使用します。どうやって別の番号を取得していますか? – RQDQ

0

方法について:このような

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

シード値をRandom()コンストラクタに渡すと、毎回同じランダム値が返されます。

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

これは達成しようとしていることですか?私はセルジオの答えはあなたが探しているものだと思っていただろうが、そうではないようだ。

関連する問題