これを試してみてくださいする前にrand.Next
に割り当てindex
rand.Next(imageList1.Images.Count);
後に変更することはありません。 Randomの初期化をグローバルスコープに入れます。今度は、「次へ」を呼び出すたびにオブジェクトを再作成する必要はありません。それは速く、より少ないメモリを使用します。また、Randomは現在の時刻を使用して数値を生成するので、同じ番号を返すこともできません。それを作り直して数値を生成すると、同じ値を繰り返し返す傾向があります。
だから、最後の部分:ランダムな画像のインデックスを取得するための関数を作成し、これはあなたのコードクリーナー、簡潔を行います。 :)
幸運な男は、プログラミングは素晴らしい趣味です。それがあなたによく役立つことを願っています!
private readonly Random rand = new Random();
private int[] _imgIndexes = new int[3];
private void button1_Click(object sender, EventArgs e)
{
// generate the random index, and pick that image with that index, then store the index number in an array so we can compare the results afterwards.
var randomIndex = getRandomImageIndex();
pictureBox1.Image = imageList1.Images[randomIndex];
_imgIndexes[0] = randomIndex;
randomIndex = getRandomImageIndex();
pictureBox2.Image = imageList1.Images[randomIndex];
_imgIndexes[1] = randomIndex;
randomIndex = getRandomImageIndex();
pictureBox3.Image = imageList1.Images[randomIndex];
_imgIndexes[2] = randomIndex;
if (_imgIndexes[0] == _imgIndexes[1] && _imgIndexes[1] == _imgIndexes[2])
{
MessageBox.Show("same");
}
// reset the result array so we can compare again.
_imgIndexes = new int[3];
}
private int getRandomImageIndex()
{
return rand.Next(imageList1.Images.Count);
}
'指数= rand.Next(imageList1.Images.Countは)'すべての画像 –
を設定する前に、問題はあなたがすべての画像ボックスに同じ乱数を使用していることである – AdamK
どうもありがとうです。 – Dhanuka777