2013-06-07 19 views
7

hata ayıklama modundan farklı sonuçlar verir. 0 ile 100 arasında 10 rastgele rakam çıkaracak basit bir kod sağladım. Bunu Visual Studio'da (C#) F5 kullanarak çalıştırdığımda Aynı sayıda 10 kez. Bununla birlikte, hata ayıklama modunda çalıştırırsam, F10 veya F11 kullanarak satır satır, ben 10 farklı sayı alırsınız (hepsi farklı olmayabilir ama onlar rasgele). Bir programın çalıştırılması bana

public static void rand() { 
    for (int j = 0; j < 10; j++) { 
     Random r = new Random(); 
     Console.WriteLine(r.Next(100)); 
    } 
} 

ben referans olarak döngü ve kopyanın dışında Rastgele r nesnelleştirilmesiyle olan sorunu düzeltmek için nasıl biliyorum ama bu neden oluyor anlamak istiyorum. Bunun tohumla ilgili bir şey olduğunu düşünüyorum ama program beni şaşırtan hata ayıklama modu altında çalışırken işe yarıyor.

Ayrıca, şimdi hata ayıklama modunun bana doğru sonuçları verip vermediğini test etmem gerekip gerekmediğini sorgulayacağım.

+0

öneri için Rastgele * dışında * loop –

+0

Teşekkür bildirmeyi deneyin ama zaten yazı –

cevap

10

Döngüden önce Random örneğini oluşturmalısınız.

public static void rand() { 
    Random r = new Random(); 
    for (int j = 0; j < 10; j++) {   
     Console.WriteLine(r.Next(100)); 
    } 
} 

Ve here 'ın açıklaması:

... varsayılan çekirdek değeri sistem saatinin türetilen ve sonlu çözünürlüğe sahiptir. Sonuç olarak, varsayılan yapıcıya yapılan bir çağrıyla yakın zamanda yaratılan farklı Rastgele nesneler, aynı varsayılan tohum değerlerine sahip olacak ve bu nedenle, aynı rastgele sayı kümelerini üretecektir. Tüm rastgele sayıları üretmek için tek bir Rastgele nesne kullanılarak bu sorundan kaçınılabilir. ... Sen farklı seed değerlerini kullanmalıdır farklı Random örneklerini kullanmak istiyorsanız

.

public static void rand() 
{ 
    for(int j = 0; j < 10; j++) 
    { 
      Random r = new Random(j); 
      Console.WriteLine(r.Next(100)); 
    } 
} 

sorunuzu cevaplama: Hep ayıklama modu bana doğru sonuçlar veriyor olsa da olmasa test etmek gerekir eğer ... örnek j değişkeni için.

Hayır, hata ayıklama modunda sonuçlardan şüphe etmeniz gerekmez. Haklılar. Yanlış, onların anlayışınız olabilir.

+8

Bu Rastgele yapıcı size Reflektör baktığında neye benzediği belirtti: 'kamu Random(): Bu (Environment.TickCount) {} ' –

İlgili konular