Buradasınız

22-C#-17 Rastgele (Random) Sayı Üretme

c# dersleri

Random Sınıfı (Rastgele Sayı Tutma)

Program yazarken bazen rastgele sayı tutma işlemi yapmak isteyebiliriz. Öğrneğin sayısal loto programı gibi bir uygulama, bir gurup içinden çekiliş yapma, şifre üretme gibi durumlarda rastgele sayılar üretmek gerekebilir. Bu durumlarda Random sınıfını kullanarak çok basit bir şekilde sayılar tutabilirz. Rastgele sayı tutmak için Random sınıfından bir nesne oluşturularak, nesnenin özellikleri ile rahatlıkla sayı üretebiliriz.

Kullanımı;

Random rastgele=new Random(); //rastgele nesnesi oluşturuldu.

rastgele nesnesi ile üç şekilde rastgele değerler tutulabilir.

Yöntem 1  (Next) : Belirtilen değerler arasında rastgele int değişkeninin kapsadığı aralıkta sayı tutulabilir. En çok kullanacağımız yöntemdir. 3 şekilde kullanılır. 

  • Next()                                    = int tipinin desteklediği aralıkta bir sayı tutar.
  • Next(Max Değer)                    = 0 ile Max Değer arasında bir sayı. Örneğin Max:100  ,100 değeri tutulmaz
  • Next (Min Değer, Max Değer)  = Min ile Max arasında bir sayı tutar. Örneğin Min:100 Max:500, 500 değeri tutulmaz.
Random r=new Random(); //r nesnesi oluşturuldu.
int sayi;
sayi=r.Next(100);       // 0 ile 100 arası sayı tutar Not: 100 dahil değil.
Console.WriteLine(sayi);
sayi=r.Next(250,501);   // 250 ile 500 arası sayı tutar.
Console.WriteLine(sayi);
sayi=r.Next(-30,-5);     // -30 ile -5 arası sayı tutar. Not: -5 dahil değil
Console.WriteLine(sayi);
//sayi=r.Next(250,5);  HATA  Önce küçük sayı ,sonra büyük sayı yazılmalı. 
Console.ReadKey();

Yöntem 2  (NextDouble) : 0.0 ile 1.0 arasında rastgele sayı tutar. Atanacak değişken double türünde olmalıdır. Tek kullanımı vardır.

Random r=new Random(); //r nesnesi oluşturuldu.
double sayi;
sayi=r.NextDouble();   // 0.0 ile 1.0 arası sayı tutar.   0.3412786 şeklinde bir sayı olabilir.
Console.WriteLine(sayi);

Console.ReadKey();

Yöntem 3 (NextBytes) : Bayte türünde bir diziye rastgele byte değerler atamayı sağlar. Tek kullanımı vardır. 

Random rastgele = new Random();
byte[] b = new byte[10];  //dizi oluşturuldu.
rastgele.NextBytes(b);    //diziye değerler atandı.

foreach (byte deger in b)  
{
   Console.Write(deger);
   Console.Write(" ");
}
Console.ReadKey();

Not: Burada sadece birinci Yöntem ile ilgili örnekler bulabilirsiniz.

 

 

Örnek: 5 ile 125 arasında rastgele bir sayı tutularak ekrana yazdıran programın yazınız.

Random r = new Random();
int sayi;

sayi=r.Next(5, 126); //5 ile 125  arasında sayı tutar.
Console.WriteLine(sayi);
//Aşağıdaki şekilde de sadece ekrana yazdırılabilir.
Console.WriteLine(r.Next(5, 126)); //Her r.Next dediğimizde bir sayı üretir.

Console.ReadKey();
 

Örnek: 5 ile 125 arasında rastgele bir sayı tutulacak. Tutulan sayının tek mi çift mi olduğu ekrana yazdıran kodu yazınız. Aşağıdaki gibi ekrana yazdırınız.

Sayı: 43 Tek

Random r = new Random();
int sayi = r.Next(5, 126);

if (sayi % 2 == 0)
    Console.WriteLine("Sayı:{0} Çift",sayi);
else
    Console.WriteLine("Sayı:{0} Tek",sayi);

Console.ReadKey();

Örnek: 50 ile 250 arasında rastgele bir sayı tutulacak. Tutulan sayının iki ya da üç basamaklı olduğunu yazdıran kodu yazınız.

65 - İki Basamaklı              1.Çalıştırmada
200 - Üç Basamaklı            2.Çalıştırmada

Random r = new Random();
int sayi = r.Next(50, 251);

if (sayi>=100 )
    Console.WriteLine("Sayı:{0} - Üç Basamaklı",sayi);
else
    Console.WriteLine("Sayı:{0} - İki basamaklı",sayi);

Console.ReadKey();

Örnek: 1 ile 15000 arasında rastgele bir sayı tutulacak.  Tutulan sayının kaç basamaklı olduğunu yazdıran c# programını yapınız.

13908 - Beş Basamaklı

Random r = new Random();
int sayi = r.Next(1,15001 );

if ((sayi >= 1) && (sayi <= 9))
    Console.WriteLine("{0} - Bir basamaklı", sayi);
else if ((sayi >= 10) && (sayi <= 99))
    Console.WriteLine("{0} - İki basamaklı", sayi);
else if ((sayi >= 100) && (sayi <= 999))
    Console.WriteLine("{0} - Üç basamaklı", sayi);
else if ((sayi >= 1000) && (sayi <= 9999))
    Console.WriteLine("{0} - Dört basamaklı", sayi);
else if ((sayi >= 10000) && (sayi <= 15000))
    Console.WriteLine("{0} - Beş basamaklı", sayi);

Console.ReadKey();

 

Örnek: 100 ile 400 arasında rastgele tutulan iki sayıyı toplayıp, sonucunun tek mi çift mi olduğunu ekrana yazdıran kodu yazınız.

Sayı1: 123
Sayı2: 250
Toplamı: 373 Tek

int s1, s2,toplam;
Random r = new Random();

s1 = r.Next(100, 401);
s2 = r.Next(100, 401);
// Console.WriteLine("Sayı1 : {0}", s1);
// Console.WriteLine("Sayı2 : {0}", s2);
Console.WriteLine("Sayı1 : {0} \nSayı2 : {1}", s1, s2);
toplam = s1 + s2;

if (toplam % 2 == 0)
     Console.WriteLine("Toplamı: {0} Çift", toplam);
else
     Console.WriteLine("Toplamı: {0} Tek", toplam);

Console.ReadKey();
 

Örnek: 2 ila 15 arasında bir sayı tutulacak. Tutulan sayı çift ise karesini, tek ise küpünü hesaplayıp ekrana yazdıran kodu yazınız.

Tutulan Sayı: 3                  1.Çalıştırmada
Küpü: 27

Tutulan Sayı: 4                   2.Çalıştırmada
Karesi: 16

int s;
Random r = new Random();

s = r.Next(2, 16);
if (s % 2 == 0)
    Console.WriteLine("Tutulan Sayı: {0} \nKaresi: {1}", s,s*s);
else
    Console.WriteLine("Tutulan Sayı: {0} \nKüpü: {1}", s, s*s*s);

Console.ReadKey();

 

Yorum ekle

Konuyla İlgili Yazılar

c# dersleri

34-C# Console Yazı ve Arkaplan Rengi

C# console uygulamalarında yazıya ve arkaplana rengi verilebilir. Console metodu altında BackgroundColor ve ForegroundColor kullanılır. BackgroundColor arkaplan rengini... devamı...