Merhaba arkadaşlar array, random sınıflarını da tanıyacağımız bu makalenin ilginç bir hikayesi var gerçekten. Her programcı gibi bir nebze olsun içinizde bir program, bir proje yapıp köşeyi dönme isteği olduğunu düşünüyorum. işte yine böyle günlerden birinde kafama bir şey dank eder.Milli Piyangomuzun 10 numara oyunu için bir program yapsak(çıkma olasılığı nispeten daha yüksek bir oyun) şöyle üç beş bin tl’lik 10 numara oynasaydık bize çıkarmıydı diye aklımızdan geçti ve programı yazmaya karar verdim. neyse uzatmadan konuya geçelim.oyundan kısaca bahsedecke olursak 80 sayodan 22 sayı çekiliyor 10 tanesini bilirseniz büyük ikramiye sizin çok sayı çekildiği için olasılık yüksek gibi. üstelik 9 bilene de fena vermiyor. 8,7,6 ve 0 biline de ikramiyeler var.gerisini programın içinde anlatıyorum. açıklama satırlarını takip edebilirsiniz.//labellerımızı boşaltalımLabel1.Text = “”;Label2.Text = “”;Label4.Text = “”;Label3.Text = “”;//random değişkenimizi tanımyoruz. ve random sınıfından oluşturuyoruz. daha sonra next komutu ile sayıları türeteceğiz.Random random = new Random();//0 bilen, 6 bilen,7,8,9,10 bilene verilen ikramiyeleri tanımlıyoruz ben bu hafta için tanımladım.//burda array tanımlanın bir yolu da görünüyor.//değişken türünden sonra [] işareti ile tek sıralı bir dize tanımlıyoruz. sayi[1],sayi[2] gibidouble [] ikramiyeler={ 1.45,1.70,9.90,70.35,1303.85,200398.03};//burda da değişik bir tanımlama yöntemi değişkenleri oluşturuyoruz boyut belirliyoruz ama işlerini sonra dolduracağız.//3 ayrı değişkten dizesi tanımladık sayılar 80 adet sayı için, cekilen 22 adet ve sizin tahmininiz 10 adeetint[] sayilar = new int[100];int[] cekilen = new int[30];int[] oynanan = new int[15];//80 sayıyı oluşturalım ve label 1’e yazalım.int i = 0;while (i < 80){i++;sayilar[i] =i;Label1.Text += sayilar[i].ToString() + "- ";}//80 adet mi kayıt döndü kontrolResponse.Write("dönen kayıt:" + i.ToString());//burada da çekilişimi yapıyoruz yani birbirinden farklı 22 adet sayıyı 80 sayı içiden seçeceğiz//ras değişkeni sayının bulunup bulunmadığını kontrol edecek. tekrar önlemek için//j 22 sayı çekmek ve kac da dönen kaydı kontrol için.int ras = -1;int j = 0;int kac = 0;while (j < 22){//random sınıfımızdan türettiğimiz değişken ile 1-80 arası sayı türetme yapıyoruz.ras = random.Next(1, 80);//eğer türetilen sayı daha önce türetilmemişse işlemlere geçiyoruz.//türetilmişse zaten while dönmeye devam edecek çünkü j artmayacak. başka sayı türetilecek.//array.index of komutu array listemizde arama yapmak için. ras değişkenimizi cekilen dizesinde arıyor.if (Array.IndexOf(cekilen, ras) == -1){//sayı tekrarsızsa cekilenlere ekliyoruz. ve ji sonraki sayı için arttırdık.j++;cekilen[j] = ras;//çekilen sayılarımzı label2'e attık.Label2.Text += cekilen[j].ToString() + "- ";//üstte bir de metin kutularına attım.çekiliş sonuçlarınıTextBox kutu = new TextBox();kutu.ID = "TextBox" + j.ToString();kutu.Width = 20;kutu.Text = ras.ToString();PlaceHolder1.Controls.Add(kutu);}}//22 kayıt dönmesi gerek. kontrol kodumuz.Response.Write("dönen kayıt:" + j.ToString());//bildiklerinizdouble toplam = 0;int kolon = 0;//evet çekiliş ve sayı oluşturma tamam peki ya oynayacağımız kolonlar//işte şimdi istediğiniz kadar random kolon türetecek işlemlere geçiyoruz.//500 kolon türettim ben demelerim için. yani 250 tl lik bir oyun.for (int k = 1; k <= 500; k++){//burda kolon ve bulunmayı sıfırlıyoruz (ras) benzersiz sayı testini burada da yapmamız gerekli.kolon = k;ras = -1;j = 0;kac = 0;Label4.Text += "
” + k.ToString() + ” : “;//10 sayı oynama hakkımız var her kolon için.while (j < 10){//80 sayı içinden ragele 10 sayımız sırayla oluşuyor.ras = random.Next(1, 80);//ras değişikenimiz benzersizse işleme geçiyoruz.daha önce aynı sayı gelmemişseif (Array.IndexOf(oynanan, ras) == -1){j++;//oynadığımız sayılar listesini oluşturoyoruz.oynanan[j] = ras;//ceikilen sayılarda arsgele sayımızı arıyoruz varsa bilme işini artırıyoruz.if (Array.IndexOf(oynanan, ras) != -1 && Array.IndexOf(cekilen, ras) != -1){kac++;//bu label'da bilinen sayıları bold yapar gereksiz bi kod.Label2.Text = Label2.Text.Replace(ras.ToString(), "” + ras.ToString() + ““);
}//oynanan kolonumuzu sıralı şekilde yazıyoruz. 10 sayı olacka döngü bitimindeLabel4.Text += oynanan[j].ToString() + “- “;}}// Response.Write(“dönen kayıt:” + j.ToString());//6 veya 0 bildiysek ikramiye kazandık.if (kac >= 6 || kac==0){Label3.Text += kac.ToString() + ” bildiniz (” + k.ToString() + “.satir)
“;//burda switch ve arrayların kullanımını görüyorsunuz.//kac sayısının 0,6,7,8,9,10 için üstteki ikramiye değerlerini topluyor.switch (kac){case 0:toplam += ikramiyeler[0];break;case 6:toplam += ikramiyeler[1];break;case 7:toplam += ikramiyeler[2];break;case 8:toplam += ikramiyeler[3];break;case 9:toplam += ikramiyeler[4];break;case 10:toplam += ikramiyeler[5];break;}}}//o kadar oynadık bakalım karda mıyız zararda mı diyenler buyursunlar//kolonu 0.50 tlden bir hesap.Label3.Text += “
kaybedilen:” + Convert.ToString(kolon * 0.50) + ” TL kazanilan :” + toplam.ToString() + ” TL”;//bildikleriniz sonu

sonucu merak edenler söyliyim. beklediğimiz olasılıktan çok daha düşük bir olasılık çıktı. 5000 kolon ile denediğimizde bile anca yüzde 20si kadar bir ikramiye kazanabiliyorsunuz. çok istisna bir durum olmazsa. tabi bilgisayarınız kasılıyor biraz hesaplamak için. üstelik defalarca tıklamanıza rağmen 10 bilmeyi geçtim 9 bile 1 kere denk geldi ancak. üstelik her tıkta 250 tl kaybettiğinizi unutmayın.yine de şöyle düşünlere iyi bir cevap oldu. gerçekten olasılık değil şans oyunu olduğunu görmüş olduk.- lan para olcak bascan 2-3 milyarlık oynıcan.- adamlar zengin abi bi oynuyo 300 milyonlukyok denemeyin. önce test edin kendiniz görün.şahsen değil çok paralık az oynası bile kalmıyor insanın şuanki sistem 500 kolon ile test ediyor. yani 250 liralık. deneyin görün. kazancınızı da görebiliyorsunuz. genelde full zarar oluyor ama. çok tıklamayın sunucumu fazla yormayın. 🙂 beni de hostumdan etmeyin.denemek isteyenler buradan.programı indirmek isteyenler ise buradan buyursunlar.