24-09-2017, Saat: 23:03
(Son Düzenleme: 25-09-2017, Saat: 08:09, Düzenleyen: TescilsizUzman.)
Merhaba,
C kursunda yazdığımız ve hoşuma giden bir örneği paylaşmak istiyorum
oyunun uzunca açıklaması https://en.0wikipedia.org/wiki/Craps
kısaca iki zar atıyorsunuz atığınız zarın toplamı 7 veya 12 ise kazanıyorsunuz eğer 2 ,3,12 ise kasa kazanıyor diğer sayılar geldiğinde örnek 6 atınız burada oyunun kuralları değişiyor ve kural atığınız zarın aynısını atana tekrar zar atabiliyorsunuz taki 6 gelene kadar 6 gelirse kazanıyorsunuz ama bu seferde 7 gelirse kasa kazanıyor anlatamamış olabilirim ama kodu görünce daha iyi anlayabilirsiniz.
Bizim burada yapacağımız şey ise 100000000 (yüz milyon) kere oynadığımızda ki kazanma olasılığımızı hesaplama
Gelelim koda
şimdide kursta yazdığımız c kodunu ekliyorum compile edecek araçlarınız var ise compile edip hız farkını yorum olarak eklemeyi unutmayın
C kursunda yazdığımız ve hoşuma giden bir örneği paylaşmak istiyorum
oyunun uzunca açıklaması https://en.0wikipedia.org/wiki/Craps
kısaca iki zar atıyorsunuz atığınız zarın toplamı 7 veya 12 ise kazanıyorsunuz eğer 2 ,3,12 ise kasa kazanıyor diğer sayılar geldiğinde örnek 6 atınız burada oyunun kuralları değişiyor ve kural atığınız zarın aynısını atana tekrar zar atabiliyorsunuz taki 6 gelene kadar 6 gelirse kazanıyorsunuz ama bu seferde 7 gelirse kasa kazanıyor anlatamamış olabilirim ama kodu görünce daha iyi anlayabilirsiniz.
Bizim burada yapacağımız şey ise 100000000 (yüz milyon) kere oynadığımızda ki kazanma olasılığımızı hesaplama
Gelelim koda
program Project1; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils,System.Math; function roll_dice:Integer; var dice1,dice2:Integer; begin dice1:=RandomRange(1,7); dice2:=RandomRange(1,7); Result:=dice1+dice2; end; function game_(dice : Integer):Integer; var new_dice:Integer; begin while True do begin new_dice:=roll_dice; if new_dice=7 then begin Result:=0; Break; end; if new_dice=dice then begin Result:=1; Break; end; end; end; function game: integer; var dice:Integer; begin dice:=0; dice:=roll_dice; case dice of 7:Result:=1; 11:Result:=1; 2:Result:=0; 3:Result:=0; 12:Result:=0; else Result:=game_(dice); end; end; var win_cnt, i:LongInt; begin try win_cnt:=0; for i := 1 to 100000000 do begin win_cnt:=win_cnt+game; end; Writeln('kazanma olasiliginiz :' ,win_cnt / i:0:12); Readln; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end.
şimdide kursta yazdığımız c kodunu ekliyorum compile edecek araçlarınız var ise compile edip hız farkını yorum olarak eklemeyi unutmayın
#include <stdio.h> #include <stdlib.h> #define NGAMES 100000000 int game_(int dice) { int new_dice; for ( ; ; ) { new_dice = roll_dice(); if (new_dice == 7) return 0; if (new_dice == dice) return 1; } } int roll_dice() { int dice1 = rand() % 6 + 1; int dice2 = rand() % 6 + 1; return dice1 + dice2; } int game() //returns 1 if player wins returns 0 otherwise { int dice = roll_dice(); switch (dice) { case 7: case 11: return 1; case 2: case 3: case 12: return 0; default: return game_(dice); } } int main() { int win_cnt = 0; for (int k = 0; k < NGAMES; ++k) { win_cnt += game(); } printf("kazanma olasiliginiz : %0.12f\n", (double)win_cnt / NGAMES); system("pause"); return 0; }
“Do. Or do not. There is no try.”