bu deneyin önce rand.Next
ile Ata index
rand.Next(imageList1.Images.Count);
sonra değişti asla. Rastlantının başlatılmasını global kapsamda yapın. Artık, her aradığınızda, nesneyi yeniden oluşturmanız gerekmez. Daha hızlı ve daha az bellek kullanıyor. Ayrıca aynı sayıyı döndürmesini de engeller, çünkü Random sayıları oluşturmak için şu anki zamanı kullanır. Yeniden oluşturmaya ve bir sayı oluşturmaya devam ederseniz, aynı değeri tekrar tekrar döndürme eğilimi gösterir.
Son bölüm: Rastgele bir resim dizini elde etmek için bir işlev oluşturun, bu, kodunuzu daha temiz ve net hale getirecektir. :)
İyi şanslar dostum, programlama harika bir hobidir. Umarım size iyi hizmet eder!
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);
}
yapmak 'endeksi = rand.Next (imageList1.Images.Count)' –
size sorun – AdamK
çok teşekkür ederim her görüntüyü ayarlamadan önce tüm resim kutuları için aynı rasgele sayı kullanıyor olmasıdır. – Dhanuka777