Yazılım.
CevapSitesi.com Beta!
Çözüm Noktası
Facebook, Twitter, Google+ veya e-posta ile paylaşın.
| Sorular | Makaleler | Üyeler | Etiketler  | İletişim
Soru sormak ya da cevap vermek için;
giriş yapın veya üye olun.

Sosyal medya hesaplarınızla da giriş yapabilirsiniz.

Cevap Geçmişi

12.04.16 12:46
new Random()   ile yeni bir Random nesnesi oluşturmak her seferinde bilgisayarınızın saatine göre rastgele sayı oluşturma işlemini yeniden ayarlanıyor. Bundan sonra Next yöntemini çağırdığınızda aldığınız sonuç sonraki new Random()   ve Next ile alacağınız sonucun aynısı oluyor. Bunun bir kaç çözümü var. En basitleri şunlar: 1. Tek bir Random nesnesi oluşturup, aynı nesne üzerinden Next yöntemini çağırın. Örnek : class Program { static void Main(string[] args) { Random r = new Random(); for (int i=0; i<100; i++) { Console.WriteLine(r.Next(1, 1000)); } Console.ReadKey(); } } 2. Bu şekilde çağırmak istemezseniz ve illaki bir fonksiyon isterseniz şöyle bir şey yapabilirsiniz: Örnek: // Şöyle bir statik sınıf oluşturun. public static class Cesitli { public static readonly Random r = new Random(); public static readonly Object kilitlemeNesnesi = new Object(); // Rastgele sayı üreten fonksiyon public static int rastgeleSayi(int alt, int ust) { lock(kilitlemeNesnesi) { return random.Next(min, max); } } } // Kullanımı class Program { static void Main(string[] args) { for (int i=0; i<100; i++) { Console.WriteLine(Cesitli.rastgeleSayi(1, 1000)); } Console.ReadKey(); } } Bu örnekteki lock , Random nesnesi statik tanımlandığından, aynı fonksiyon başka bir iş parçası (thread) tarafından çağırılabileceği için kullanılıyor. Bilmiyorsanız lock (kilit) işini ayrıca incelemelisiniz. Özellikle web sitesi gibi bir ortamda kullanıyorsanız bu gerekli. Bunların haricinde şurada başka yollar da belirtilmiş.
Ekleyen: cevapsitesi
Değiştiren: cevapsitesi
Cevap olarak seçen: canora
11.04.16 16:06
new Random() ile yeni bir Random nesnesi oluşturmak her seferinde bilgisayarınızın saatine göre rastgele sayı oluşturma işlemini yeniden ayarlanıyor. Bundan sonra Next yöntemini çağırdığınızda aldığınız sonuç sonraki new Random() ve Next ile alacağınız sonucun aynısı oluyor. Bunun bir kaç çözümü var. En basitleri şunlar: 1. Tek bir Random nesnesi oluşturup, aynı nesne üzerinden Next yöntemini çağırın. Örnek : class Program { static void Main(string[] args) { Random r = new Random(); for (int i=0; i<100; i++) { Console.WriteLine(r.Next(1, 1000)); } Console.ReadKey(); } } 2. Bu şekilde çağırmak istemezseniz ve illaki bir fonksiyon isterseniz şöyle bir şey yapabilirsiniz: Örnek: // Şöyle bir statik sınıf oluşturun. public static class Cesitli { public static readonly Random r = new Random(); public static readonly Object kilitlemeNesnesi = new Object(); // Rastgele sayı üreten fonksiyon public static int rastgeleSayi(int alt, int ust) { lock ( kilitlemeNesnesi ) { return random . Next ( min , max ); } } } // Kullanımı class Program { static void Main(string[] args) { for (int i=0; i<100; i++) { Console.WriteLine(Cesitli.rastgeleSayi(1, 1000)); } Console.ReadKey(); } } Bu örnekteki lock, Random nesnesi statik tanımlandığından, başka bir görev tarafından aynı fonksiyon başka bir iş parçası (thread) tarafından çağırılabileceği için kullanılıyor. Bilmiyorsanız lock (kilit) işini ayrıca incelemelisiniz. Özellikle web sitesi gibi bir ortamda kullanıyorsanız bu gerekli. Bunların haricinde şurada başka yollar da belirtilmiş.
Ekleyen: cevapsitesi

En fazla 3 eski durum gösterilir.