Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
uluslararası kumar sabiti bulma craps oyunu
#1
Merhaba,
C kursunda yazdığımız ve hoşuma giden bir örneği paylaşmak istiyorum
oyunun uzunca açıklaması Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
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.”
Cevapla
#2
Bilgisayarı kapattım,telefondan yazıyorum,yarın deneyip sonucunu yazacağım.Bir de fikrimce ,main'in içine srand(time(0)) fonksiyonunu koyarsanız rand fonksiyonu daha sağlıklı çalışacaktır.iyi geceler.
Bizi Toprağa Gömdüler Fakat Tohum Olduğumuzu Bilmiyorlardı.
Cevapla
#3
Test Ortamı :
Delphi 10.2
Intel® Core™ i7-6700HQ CPU @ 2.60GHz



09:05:27
kazanma olasiliginiz :0.492944175071
09:05:31
milisn: 4847


Süre ölçümü için aşağıdaki küçük değişikliği yaptım.



     starttime := now();
    writeln(timetostr(now));
    for i := 1 to 100000000  do
    begin
     win_cnt:=win_cnt+game;
    end;
    Writeln('kazanma olasiliginiz :' ,win_cnt / i:0:12);
    writeln(timetostr(now));
    stoptime := Now();

    fark := MilliSecondsBetween(stoptime,starttime);
    writeln('milisn: ' + inttostr(fark));

    Readln;
Cevapla
#4
Photo 
Denedim İşte Sonuçlar:
   
   
   
   

Not:Elementary os'un üzerinde windows'u sanal olarak kullanıyorum.
Bizi Toprağa Gömdüler Fakat Tohum Olduğumuzu Bilmiyorlardı.
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Delphi tarafından çağrılan programın süresini bulma cinarbil 10 422 05-01-2018, Saat: 01:14
Son Yorum: narkotik
  Uzay gemisi oyunu brs 2 372 27-06-2017, Saat: 02:42
Son Yorum: brs
  Araba Yarışı Oyunu (FireMonkey) Fesih ARSLAN 2 2.060 27-09-2016, Saat: 09:19
Son Yorum: Fesih ARSLAN
  Sayı Eşleştirme Oyunu Fesih ARSLAN 0 1.473 25-07-2016, Saat: 21:47
Son Yorum: Fesih ARSLAN
  FireMonkey ile Zıplayan Top Oyunu Fesih ARSLAN 0 1.535 25-07-2016, Saat: 20:31
Son Yorum: Fesih ARSLAN



Konuyu Okuyanlar: 1 Ziyaretçi