5.00 / 1 oy

Java'da Zar Atma Simülasyonları ile Olasılık Hesabı Yapmak

Bir önceki paylaşımımda zar atma algoritması üzerine istatistikte büyük sayılar kanununun çalışma mantığını göstermeye çalıştığım bozuk para atma olasılıkları örneği hazırlamıştım. Zar atma deneyi 2 sonuçlu bir deney, daha çok sonuçlu bir deney olarak da akla ilk gelen örnek zar örneği olduğu için zar atma sayıları arttıkça her bir zarın gelme olasılığının nasıl 1/6'ya yaklaştığını beraber inceleyeceğiz. Rastgele zar atma algoritması için daha önce paylaştığım Java ile rastgele zar atan program kodlamak örneğini inceleyebilirsiniz.

Örnek: 10 kere zar atalım ve her bir zarın gelme olasılığını kontrol edelim:

int zarsayisi=10;
int[] zarlar = new int[zarsayisi];

for (int i=0;i<=zarsayisi;i++)
{
	int zar=(int)(Math.random()*6)+1;
	zarlar[zar-1]++;
}

System.out.println("Toplam Deneme:"+zarsayisi);
System.out.println("1 gelen zar sayısı:"+zarlar[0]);
System.out.println("2 gelen zar sayısı:"+zarlar[1]);
System.out.println("3 gelen zar sayısı:"+zarlar[2]);
System.out.println("4 gelen zar sayısı:"+zarlar[3]);
System.out.println("5 gelen zar sayısı:"+zarlar[4]);
System.out.println("6 gelen zar sayısı:"+zarlar[5]);

System.out.println("Zarın 1 gelme olasılığı:"+((double)zarlar[0]/zarsayisi));
System.out.println("Zarın 2 gelme olasılığı:"+((double)zarlar[1]/zarsayisi));
System.out.println("Zarın 3 gelme olasılığı:"+((double)zarlar[2]/zarsayisi));
System.out.println("Zarın 4 gelme olasılığı:"+((double)zarlar[3]/zarsayisi));
System.out.println("Zarın 5 gelme olasılığı:"+((double)zarlar[4]/zarsayisi));
System.out.println("Zarın 6 gelme olasılığı:"+((double)zarlar[5]/zarsayisi));

Çıktı:

Toplam Deneme:10
1 gelen zar sayısı:1
2 gelen zar sayısı:1
3 gelen zar sayısı:1
4 gelen zar sayısı:1
5 gelen zar sayısı:3
6 gelen zar sayısı:4
Zarın 1 gelme olasılığı:0.1
Zarın 2 gelme olasılığı:0.1
Zarın 3 gelme olasılığı:0.1
Zarın 4 gelme olasılığı:0.1
Zarın 5 gelme olasılığı:0.3
Zarın 6 gelme olasılığı:0.4

Ya zar hileli, ya da bugün fazla şanslıyız. Deneme sayısını artırarak çıktılarını paylaşıyorum.

Not: sadece koddaki zarsayisi değişkeninin değerini artırarak deneme sayısını değiştirebilirsiniz.

Örnek: 1000 zar atışı

Toplam Deneme:1000
1 gelen zar sayısı:164
2 gelen zar sayısı:159
3 gelen zar sayısı:177
4 gelen zar sayısı:163
5 gelen zar sayısı:166
6 gelen zar sayısı:172
Zarın 1 gelme olasılığı:0.164
Zarın 2 gelme olasılığı:0.159
Zarın 3 gelme olasılığı:0.177
Zarın 4 gelme olasılığı:0.163
Zarın 5 gelme olasılığı:0.166
Zarın 6 gelme olasılığı:0.172

Örnek: 1 milyon zar atışı

Toplam Deneme:1000000
1 gelen zar sayısı:167444
2 gelen zar sayısı:166380
3 gelen zar sayısı:166148
4 gelen zar sayısı:166312
5 gelen zar sayısı:166639
6 gelen zar sayısı:167078
Zarın 1 gelme olasılığı:0.167444
Zarın 2 gelme olasılığı:0.16638
Zarın 3 gelme olasılığı:0.166148
Zarın 4 gelme olasılığı:0.166312
Zarın 5 gelme olasılığı:0.166639
Zarın 6 gelme olasılığı:0.167078

Örnek: 1 milyar zar atışı sonuçları

Toplam Deneme:1000000000
1 gelen zar sayısı:166655097
2 gelen zar sayısı:166669709
3 gelen zar sayısı:166669341
4 gelen zar sayısı:166658792
5 gelen zar sayısı:166663429
6 gelen zar sayısı:166683633
Zarın 1 gelme olasılığı:0.166655097
Zarın 2 gelme olasılığı:0.166669709
Zarın 3 gelme olasılığı:0.166669341
Zarın 4 gelme olasılığı:0.166658792
Zarın 5 gelme olasılığı:0.166663429
Zarın 6 gelme olasılığı:0.166683633

Sonuç: Deneme sayısı arttıkça sonuçların 1/6'ya yakınsadığını görebiliyoruz.

 

 

utku33

10.02.2020 01:44

Bu soru 1 kez yanıtlandı.

Bu soruya sadece kayıtlı kullanıcılar yanıt yazabilirler. Yanıt yazmak için lütfen giriş yapınız.

Reitix
Java'da Zar Atma Simülasyonları ile Olasılık Hesabı Yapmak

İnternet sitemizdeki deneyiminizi iyileştirmek için çerezler kullanıyoruz. Bu siteye giriş yaparak çerez kullanımını kabul etmiş sayılıyorsunuz. Daha fazla bilgi.