Evet, merhabalar.
Bugünkü bloguma hoş geldiniz.
Bugün sizlere C dilinde yazdığınız programda rand() fonksiyonunun neden düzgün çalışmadığını elimden geldiğince anlatacağım.
rand() fonksiyonu, yapısı itibarıyla, sadece bir defa rastgele sayı üretir.
Örneğin bir zar atma programı yapalım:
Programımızın çıktısı şöyle olacaktır:
(stdlib.h dosyasını eklemeyi unuttuğum için uyarı verdi. )
Gördüğünüz gibi, programımız hep rastgele olarak ürettiği 2 sayısını veriyor. Ne kadar fazla çalıştırsak ta. Bunu değişitirmenin tek yolu yeniden derlemek (mi acaba).
İşte bugünkü blogumuzun konusu da bu. Bu 2 sayısını her saniye sürekli olarak başka sayılarla değiştireceğiz.
Bu işlem için srand() fonksiyonunu ve time.h kütüphanesinin sağladığı UNIX saati olanaklarını kullanacağız. UNIX saati, her saniye, kendi değeri üzerine 1 ekleyerek ilerler. Ve böylece her saniye değiştirmiş oluruz.
Hemen kodumuzu tamir edelim.
Ve de çıktısını şimdi görelim:
Görmüş olduğunuz gibi, istediğimiz şekilde çalıştı. Mutlu son!
Bu blogu Deitel'ın "C ile Programlama" kitabından (İngilizce) okudum. Biraz düzenleyip, size sunmuş bulunmaktayım. Türkçe çevirisini satan sitelerde bu kitabı bulabilirsiniz. Gayet güzel ve tavsiye edebileceğim bir kitaptır.
Bugünkü bloguma hoş geldiniz.
Bugün sizlere C dilinde yazdığınız programda rand() fonksiyonunun neden düzgün çalışmadığını elimden geldiğince anlatacağım.
rand() fonksiyonu, yapısı itibarıyla, sadece bir defa rastgele sayı üretir.
Örneğin bir zar atma programı yapalım:
C:
#include <stdio.h>
#include <stdlib.h>
int main(){
int zar = 1+(rand()%6); //Zarımız 6 yüzlü olmalı. Ayrıca 0'dan başlayacağı için ve 0 yüzlü bir zar olmadığı için "1+" ifadesini başına yazdım.
printf("Zar: %d\n",zar);
return 0;
}
Programımızın çıktısı şöyle olacaktır:
Gördüğünüz gibi, programımız hep rastgele olarak ürettiği 2 sayısını veriyor. Ne kadar fazla çalıştırsak ta. Bunu değişitirmenin tek yolu yeniden derlemek (mi acaba).
İşte bugünkü blogumuzun konusu da bu. Bu 2 sayısını her saniye sürekli olarak başka sayılarla değiştireceğiz.
Bu işlem için srand() fonksiyonunu ve time.h kütüphanesinin sağladığı UNIX saati olanaklarını kullanacağız. UNIX saati, her saniye, kendi değeri üzerine 1 ekleyerek ilerler. Ve böylece her saniye değiştirmiş oluruz.
Hemen kodumuzu tamir edelim.
C:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(){
srand(time(NULL));
int zar = 1+(rand()%6);
printf("Zar : %d\n",zar);
return 0;
}
Ve de çıktısını şimdi görelim:
Görmüş olduğunuz gibi, istediğimiz şekilde çalıştı. Mutlu son!
Bu blogu Deitel'ın "C ile Programlama" kitabından (İngilizce) okudum. Biraz düzenleyip, size sunmuş bulunmaktayım. Türkçe çevirisini satan sitelerde bu kitabı bulabilirsiniz. Gayet güzel ve tavsiye edebileceğim bir kitaptır.