C dilinde rand() fonksiyonunun düzgün kullanımı

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:

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:

normal rand.png
(stdlib.h dosyasını eklemeyi unuttuğum için uyarı verdi. :D)

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:

srand rand.png


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.

Yorumlar

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.


3rd party gelistiricilerinin sadece bu konu amacli yaptigi libraryleri ya da Boost'u kullanabilirsin.
 
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.


3rd party gelistiricilerinin sadece bu konu amacli yaptigi libraryleri ya da Boost'u kullanabilirsin.

C++'ta zaten random kütüphanesini kullanmaktayım ama C dilinde de 3.parti geliştiricilerin yazdığı kütüphaneleri kullanabilirim. Teşekkürler.
 

Blog girdisi detayları

Ekleyen
TerabyteForever
Okuma süresi
1 dakika okuma
Görüntüleme
2.201
Yorumlar
6
Son güncelleme

Yazılım kategorisindeki diğer girdiler

TerabyteForever adlı kullanıcının diğer girdileri

Bu girdiyi paylaş

Geri
Yukarı