08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

C ve Sistem Programcıları Derneği - C Ders Notları - Necati Ergin<br />

}<br />

while (len--) {<br />

while (isvowel(ch = rand() % 26 + 'A'))<br />

;<br />

putchar(ch);<br />

}<br />

Aşağıda rastgele bir tarihi ekrana yazdıran print_random_date isimli bir işlev<br />

tanımlanıyor. İşlev her çağrıldığında 1.1.MIN_YEAR, 31.12.MAX_YEAR tarihleri arasında<br />

rastgele ancak geçerli bir tarih bilgisini ekrana yazıyor:<br />

#include <br />

#include <br />

#include <br />

#define MAX_YEAR 2010<br />

#define MIN_YEAR 1900<br />

void print_random_date()<br />

{<br />

int d, m, y;<br />

}<br />

y = rand() % (MAX_YEAR - MIN_YEAR + 1) + MIN_YEAR;<br />

m = rand() % 12 + 1;<br />

switch (m) {<br />

case 4 : case 6 : case 9 : case 11:<br />

d = rand() % 30 + 1; break;<br />

case 2 : d = rand() % (isleap(y) ? 29 : 28) + 1; break;<br />

default: d = rand() % 31 + 1;<br />

}<br />

printf("%d/%d/%d\n", d, m, y);<br />

int isleap(int y)<br />

{<br />

return y % 4 == 0 && y % 100 != 0 || y % 400 == 0;<br />

}<br />

int main()<br />

{<br />

int k;<br />

srand(time(0));<br />

for (k = 0; k < 20; ++k)<br />

print_random_date();<br />

}<br />

return 0;<br />

Olasılık problemleri, olasılığa konu olayın bir bilgisayar programı ile gerçekleştirilmesi<br />

yoluyla çözülebilir. İyi bir rastgele sayı üreticisi kullanıldığı takdirde, olasılığa konu olay,<br />

bir bilgisayar programı ile oynatılır, olay bilgisayarın işlem yapma hızından faydalanılarak<br />

yüksek sayılarda yinelemeye sokulur. Şüphesiz hesaplanmak istenen olaya ilişkin olasılık<br />

değeri, yapılan yineleme sayısına ve rastgele sayı üreticisinin niteliğine bağlı olur.<br />

Aşağıdaki kod yazı tura atılması olayında tura gelme olasılığını hesaplıyor:<br />

194

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!