C# tekrarsız rastgele sayı çekme
Arkadaşlar, aşağıdaki kodda sayısal loto programı yazmaya çalıştım, her bir kolondaki değerlerin tekrarsız olması için kodu nasıl düzeltmeliyim? Teşekkürler.Random Rnd= new Random(); int Kolon = 8; for (int kln = 1; kln <= Kolon; kln++) { for (int i = 1; i <= 6; i++) { int loto = Rnd.
Arkadaşlar, aşağıdaki kodda sayısal loto programı yazmaya çalıştım, her bir kolondaki değerlerin tekrarsız olması için kodu nasıl düzeltmeliyim? Teşekkürler.
Random Rnd= new Random();
int Kolon = 8;
for (int kln = 1; kln <= Kolon; kln++) {
for (int i = 1; i <= 6; i++) {
int loto = Rnd.Next (1, 50);
Console.Write ("{0} ", loto);
}
Console.Write ("\n");
}
0
Seed eklemen lazım.
Random rand = new Random(Guid.NewGuid().GetHashCode());
sonra kullan rand.Next diye.
0
mesglsn sanirm bn yatiyrm
(
26.12.15)
@mesglsn sanirm bn yatiyrm
Denedim ama tekrar verdi yine.
0
Şu anda denedim gayet random veriyor. Kolay kolay tekrar vermemesi lazım bu çözümün. Kendi yarattğın Rnd objesini değil, rand objesini kullanıyorun değil mi?
0
mesglsn sanirm bn yatiyrm
(
26.12.15)
c de srand(time(null)) ile yapılıyor. time kütüphanesinde. c# daki karşılığı varsa bulabilirsin
0
sanguine mcqaer
(
26.12.15)
Farklı yöntemlerle yapılabilir ancak şu an aklıma gelenler; bir hashset oluşturup rassal sayıları bu hashsetin eleman sayısı 6 olana kadar eklemek. Hashset tekrar veri almadığı için eleman sayısı 6'ya ulaşmışsa bu elemanların hepsi birbirinden farklıdır. Ancak algoritma hesaplama süresi rassaların aynı gelme ihtimaline bağlı olarak uzayacaktır. Bir başka yöntem de topları simüle etmek. Bu yöntemde bir List oluşturup içine 1'den 49'a kadar bütün sayıları ekliyoruz. Sonra bu listenin eleman sayısı aralığında kalacak rassal bir sayı üretiyoruz. Örneğin üretilen sayı x olsun. Bu listeden x. elemanı alıyoruz ve listeden çıkarıyoruz. Bu işlemi 6 defa yaptığımızda elimizdeki sayılar birbirlerinden farklı 6 rassal sayı olmak zorunda.
0