C# random sayıyı sadece tek sayı halinde seçtirmek

371129

Hectopat
Katılım
28 Eylül 2020
Mesajlar
3.799
Makaleler
9
Çözümler
12
Herkese iyi akşamlar.

[CODE lang="csharp" title="Kısa"]int [] oyunculars = {1,3,5,7,9};
Random rastgele = new Random();
int sans = rastgele.Next(oyunculars[0] , oyunculars[4]) ;
[/CODE]

Böyle bir şey denedim fakat aradaki sayıları da aldığı için tek sayı olarak seçtirtemedim. Nasıl yapabilirim?
 
Son düzenleyen: Moderatör:
Yazdığınız kodda sans değişkenine 1 ile 7 arasında rastgele türetilmiş bir sayı atanır. Yapmak istediğiniz yüzdelik bir şans oluşturmak mı?
Belki bu oyunu bilirsiniz. Amacım önce oyuncuyu seçmek sonra ayrı bir random ile akışı seçmek.
Kod:
            Console.WriteLine("Oyuncular ");
            Console.WriteLine();
            Console.WriteLine("1 - " + oyuncular[1]);
            Console.WriteLine("3 - " + oyuncular[3]);
            Console.WriteLine("5 - " + oyuncular[5]);
            Console.WriteLine("7 - " + oyuncular[7]);
            Console.WriteLine("9 - " + oyuncular[9]);
            Console.WriteLine();
            Console.WriteLine("0 - Sarı kart");
            Console.WriteLine("2 - Kırmızı kart");
            Console.WriteLine("4 - Gol");
            Console.WriteLine("6 - Aut");
            Console.WriteLine("8 - Penaltı");
 
2 katı kadar hesaplayıp sonra integer bölme yapabilirsin. Ama yine çift sayılar gelebilir.
Görünen o ki Random.Next() verilen aralıkta değer oluşturuyor.

Kod:
int [] oyunculars = {1, 3, 5, 7, 9};
Random rastgele = new Random();
int sans = rastgele.Next(oyunculars[0], oyunculars[4]);
          
if (sans % 2 == 0){
    sans++;
}
          
Console.WriteLine(sans);
 
Sanırım aradığın şey bu:

C#:
  class Program
    {
        static int[] oyunculars = { 1, 3, 5, 7, 9 };
        static Random rd = new Random();
        
        public static int sayılar()
        {
            return oyunculars[rd.Next(oyunculars.Length)];
          
        }
        static void Main(string[] args)
        {
            Console.WriteLine(sayılar());
          
        }
    }
 
Random.Next(begin, end) // (end exclusive (son hariç))
oyuncular[0] = 1 ve oyuncular[4] = 9. Çünkü bilgisayarlar 0'dan başlayarak sayar.

Random.Next(3, 9) derseniz de [3, 4, 5, 6, 7, 8] arasından bir sayı sonuncu alırsınız. 9 önceden de bahsettiğim sebepten çıktıda görünmez.

Eğer bir oyuncu ve bir kart seçecekseniz. Oyuncular ve Kartlar adında 2 ayrı dizi oluşturup ikisinden de sıra ile birer eleman seçmeniz daha mantıklı olacaktır.


C#:
// Main dışı
static Random rand new Random();
readonly string[] oyuncular = ["ahmet", "mehmet", "ali", "veli"];
readonly string[] akislar = ["Kırmızı kart", "Gol", "Aut", "Penaltı"];

public static string oyunuSec() => oyuncular[rand.Next(oyuncular.length)];
public static string akisSec() => akislar[rand.Next(akislar.length)];

// Main içerisi

string seciliOyuncu = oyuncuSec();
string seciliAkis = akisSec();

Tabii score vs tutacaksanız ayrı bir array'de tutmak yerine Oyuncu objesi yaratıp içerisine Score, isim gibi Attribute'lar ekleyebilirsiniz.
 
Son düzenleme:
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı