08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

RASTGELE SAYI ÜRETİMİ ve KONTROL<br />

DEYİMLERİNE İLİŞKİN GENEL UYGULAMALAR<br />

Rastgele sayı üretimi matematiğin önemli konularından biridir. Rastgele sayılar ya da<br />

daha doğru ifadeyle, rastgele izlenimi veren sayılar (sözde rastgele sayılar - pseudo<br />

random numbers) istatistik, ekonomi, matematik, yazılım gibi pek çok alanda kullanılır.<br />

Rastgele sayılar bir rastgele sayı üreticisi (random number generator) tarafından üretilir.<br />

Rastgele sayı üreticisi aslında matematiksel bir işlevdir. Söz konusu işlev, bir başlangıç<br />

değerini alarak bir değer üretir. Daha sonra üretmiş olduğu her değeri yeni girdi olarak<br />

alır, yeniden bir sayı üretir. Üreticinin ürettiği sayılar rastgeledir.<br />

rand İşlevi<br />

Standart rand işlevi rastgele sayı üretir. Bu işlevin bildirimi aşağıdaki gibidir:<br />

int rand(void);<br />

C standartları rand işlevinin rastgele sayı üretimi konusunda kullanacağı algoritma ya da<br />

teknik üzerinde bir koşul koymamıştır. Bu konu derleyiciyi yazanların seçimine bağlı<br />

(implementation dependent) bırakılmıştır. rand işlevinin bildirimi, standart bir başlık<br />

dosyası olan stdlib.h içindedir. Bu yüzden rand işlevinin çağrılması durumunda bu başlık<br />

dosyası "include" önişlemci komutuyla kaynak koda eklenmelidir.<br />

#include <br />

rand işlevi her çağrıldığında [0, RAND_MAX] aralığında rastgele bir tamsayı değerini geri<br />

döndürür. RAND_MAX stdlib.h başlık dosyası içinde tanımlanan bir simgesel değişmezdir.<br />

C standartları bu simgesel değişmezin en az 32767 değerinde olmasını şart koşmaktadır.<br />

Derleyicilerin hemen hepsi RAND_MAX simgesel değişmezini 32767 olarak, yani 2 byte<br />

işaretli int türünün en büyük değeri olarak tanımlar:<br />

#define RAND_MAX 32767<br />

Aşağıdaki program parçasında, 0 ile RAND_MAX arasında 10 adet rastgele sayı üretilerek<br />

ekrana yazdırılıyor. Programı derleyerek çalıştırın:<br />

#include <br />

#include <br />

int main()<br />

{<br />

int k;<br />

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

printf("%d ", rand());<br />

}<br />

return 0;<br />

Yukarıdaki kaynak kodla oluşturulan programın her çalıştırılmasında ekrana aynı sayılar<br />

yazılır. Örneğin yukarıdaki program, DOS altında Borland Turbo C 2.0 derleyicisi ile<br />

derleyip çalıştırıldığında ekran çıktısı aşağıdaki gibi oldu:<br />

346 130 10982 1090 11656 7117 17595 6415 22948 31126<br />

189

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

Saved successfully!

Ooh no, something went wrong!