C# ve Php ile Sayısal Loto Sayı Üreticisi

Herkesin bildiği sayısal loto var bu yazımda.
Kazanmak için 1 – 49 arası sayılardan doğru olanları önceden tahmin etmek gerekiyor.

Çoğu insanın uğurlu sayıları vardır. Bazılarının bir tane, bazılarının da birkaç tane. Eğer bu sayılar 1 – 49 aralığındaysa kuponunda o sayılara yer verenlerin sayısı azımsanmayacak kadar çok. Ama kazanmak için uğurlu sayınızın olması yetmiyor.

Ayrıca kupon doldururken yazdığımız diğer sayılardan etkileniriz. Mesela 37 ve 38 yazan biri genelde aynı kolonda 39 yazmaz. Oysa 1 – 12 – 23 – 34 – 45 – 49 ile 1 – 2 – 3 – 4 – 5 – 6 gelme olasılıkları aynıdır.

Birden fazla doldurduğumuzda yazacak sayı bulmakta zorlanırız bazen.

Kuponları otomatik dolduran makineler bu sorunlara (bunlardan harhangi birini sorun olarak görenlere) bir derece yardımcı oluyorlar.

Biz de C# ile bu makineler gibi sayı üretebiliriz. Bu konuda .net’in Random sınıfı bizim işimizi görecektir.

Önce Random sınıfından bir nesne yaratmakla başlayalım :

Random rnd = new Random();

ile Rondom sınıfından rnd isimli bir nesne yaratıyoruz.

int birinciSayi = rnd.Next(1, 50);

ile de 1-50 arasında (1 dahil 50 dahil değil) rastgele bir sayı üretiyoruz.

Daha sonra

int ikinciSayi = rnd.Next(1, 50);
while (birinciSayi == ikinciSayi)
{
     ikinciSayi = rnd.Next(1, 50);
}

satırları ile ikinci ratgele sayımızı üretip diğeri ile eşit mi diye kontrol ediyoruz. Eğer iki sayı eşitse while döngüsü yardımı ile, eşit olmayana kadar ikinci sayı yeniden üretiliyor.

Üçüncü sayı için de

int ucuncuSayi = rnd.Next(1, 50);
while (birinciSayi == ucuncuSayi || ikinciSayi == ucuncuSayi)
{
     ucuncuSayi = rnd.Next(1, 50);
}

bu kodları kullanalım. Bu da aynı şekilde üretilen üçüncü sayı ile ilk iki sayıyı karşılaştırıyor. Herhangi birine eşitse yeniden üretiyor.

Benzer şekilde 6 farklı sayıyı da ürettikten sonra istersek direkt kullanabilir, istersek sıraladıktan sonra kullanabiliriz. (Trt çekilişten sonra hemen sıralayıp veriyor :))

Sıralamak için sayıları bir diziye atıp, diziyi sıralayalım. Bunu :

int[] dizi = new int[6];
dizi[0] = birinciSayi;
dizi[1] = ikinciSayi;
dizi[2] = ucuncuSayi;
dizi[3] = dorduncuSayi;
dizi[4] = besinciSayi;
dizi[5] = altinciSayi;

şeklinde diziye atarak ve :

Array.Sort(dizi);

şeklinde de sıralayarak yapabiliriz. Sıralama yapmak için C’deki gibi kendi fonksiyonumuzu yazmak yerine Array sınıfının nimetlerinden yararlanmak daha kolay olur :)

Artık elimizde 1 – 49 arasında 6 farklı elemanı olan bir dizi var. Bundan sonrası size ait. Konsolda çalışıyorsanız :

for (int i = 0; i < 6; i++)
{
     Console.WriteLine(dizi[i]);
}

şeklinde sayıları görebilirsiniz. Eğer windows formu kullanacaksak forma 1 tane buton ve 6 tane text box eklememiz gerekecek.
Text kutularının isimlerini değiştirmezsek eğer, butonun click eventine :

textBox1.Text = Convert.ToString(dizi[0]);
textBox2.Text = Convert.ToString(dizi[1]);
textBox3.Text = Convert.ToString(dizi[2]);
textBox4.Text = Convert.ToString(dizi[3]);
textBox5.Text = Convert.ToString(dizi[4]);
textBox6.Text = Convert.ToString(dizi[5]);

bunları yazarsak, sayılarımız sıralı olarak her kutunun içinde bir tane olacak şekilde görünecektir.

Visual Studio 2008 ile derlediğim örnek uygulamayı burdan indirebilirsiniz.
Çalışması için bilgisayarınızda .net framework 2.0 veya üzeri kurulu olmalıdır.

Yukarıdaki işlerin aynısını Php ile de yapabiliriz. Sayıları Php kullanarak üretmek için şuraya göz atın.

İlgili olabilecek yazılar:

Java %100 Nesne Yönelimli Bir Programlama Dili Midir?
Windows Phone 7 :: Telefon Araması Yapabilme
C# .Net :: Email Regex
WordPress :: Tema’da “Anasayfa” Bağlantısının Olup/Olmaması
Pardus’ta Apache-Php-MySql Kurulumu


C# ve Php ile Sayısal Loto Sayı Üreticisi” yazısına 4 yorum yapılmış.

  1. eyvallah kardeşim güzel olmuşta sayısal lotonun sonuçlarına baktım bugun ~5 kolonda da hiçbir rakamı tutturamamışşım :D
    şans topu daha iyi 2-3 haftadır en az 1+1 filan tutturuyom :D

  2. @fnddd
    Ne yapmaya çalıştığını, nerde nasıl bir hata aldığını söylersen yardım bulman sanki daha kolay olur.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*