BSD Rasgele Sayı İşlevleri
Önceki Rasgeleymiş gibi Görünen Sayılar Sonraki
BSD Rasgele Sayı İşlevleri
Bu bölümde BSD'den türetilmiş rasgele sayı üretim işlevlerine yer verilmiştir. GNU kütüphenesiyle bu işlevleri kullanmanın bir getirisi yoktur; onları sadece BSD uyumluluğu adına destekliyoruz.
Bu işlevlerin prototipleri stdlib.h dosyasında bildirilmiştir.
long int random
(void)
işlev
Bu işlev dizilimdeki sonraki rasgele gibi görünen sayıyı döndürür. Dönen değer 0 ile RAND_MAX arasındadır.
Not
Bu işlev geçici olarak, long int daha geniş olsa bile dönüş değerinin daima 32 bit olduğunu belirten int32_t türünde bir değer döndürecek şekilde tanımlanmıştır. Standart farklı olmasını ister. Kullanıcıların 32 bitlik sınırlamanın farkında olması için böyle yapılmıştır.
void srandom
(unsigned int tohum)
işlev
srandom işlevi rasgele sayı üretecinin durumunu tohum tamsayısına tabanlandırır. tohum olarak 1 değerini verirseniz işlevin rasgele sayıların öntanımlı dizilimini üretmesine sebep olursunuz.
Yazılımınızın her çalıştırılışında farklı bir rasgele sayı dizilimi kullanmasını istiyorsanız srandom (time (0)) çağrısını kullanın.
void *initstate
(unsigned int tohum,
 void        *durum,
 size_t       boyut)
işlev
initstate işlevi rasgele sayı üretecini ilklendirmek için kullanılır. durum argümanı durum bilgisini tutan boyut baytlık bir dizidir. tohum'a bağlı olarak ilklendirilir. boyut değeri 8 ile 256 arasında ve ikinin üstel katlarında olmalıdır. Daha büyük durum dizisi daha iyidir.
İşlev önceki durum bilgisi dizisinin değerini döndürür. Bu değeri daha sonra durumu eski haline getirmek için setstate işlevinde argüman olarak kullanabilirsiniz.
void *setstate
(void *durum)
işlev
setstate işlevi rasgele sayı durumunu durum durum bilgisi ile eski haline getirir. Argüman evvelce yapılmış bir initstate veya setstate çağrısından dönmüş bir değer olmalıdır.
İşlev önceki durum bilgisi dizisinin değerini döndürür. Bu değeri daha sonra durumu eski haline getirmek için setstate işlevinde argüman olarak kullanabilirsiniz.
İşlev başarısız olursa NULL ile döner.
Bu bölümde buraya kadar bahsedilen dört işlevin hepsi durum bilgisini tüm evrelerle paylaşır. Durum bilgisi kullanıcı tarafından erişilebilir değildir, sadece bu işlevlerle erişilebilir. Bu, kendi rasgele sayı üreteçlerinin olmasını gerektiren evreler bakımından çalışılması zor bir durum oluşturur.
GNU C kütüphanesi bu dört işleve ek olarak evreye özel rasgele sayı üreteçlerini mümkün kılmak için durumu ayrı bir parametre olarak alan dört işlev daha içerir. Aslında, bundan önce bahsedilen dört işlev de dahili olarak aşağıdaki arayüz ile gerçeklenmiştir.
stdlib.h başlık dosyası şu türün bir tanımını içerir:
struct random_data
veri türü
struct random_data türündeki nesneler rasgele sayı üretecinin durumunu ifade etmek için gereken bilgiyi içerir. Türün tam bir tanımı mevcut olduğu halde türün şeffaf olmadığı varsayılmalıdır.
Durum bilgisini değiştiren işlevler bundan önce açıklanan işlevlerin yaptıklarını evresel kullanıma uygun olarak yaparlar.
int random_r
(struct random_data *restrict tampon,
 int32_t *restrict            sonuç)
işlev
random_r işlevi genel durum bilgisi yerine ilk parametresi ile gösterilen nesnedeki durumu kullanması dışında random işlevi gibi davranır.
int srandom_r
(unsigned int        tohum,
 struct random_data *tampon)
işlev
srandom_r işlevi genel durum bilgisi yerine ikinci parametresi ile gösterilen nesnedeki durumu kullanması dışında srandom işlevi gibi davranır.
int initstate_r
(unsigned int                 tohum,
 char *restrict               durum-tamponu,
 size_t                       durum-uzunluğu,
 struct random_data *restrict tampon)
işlev
initstate_r işlevi genel durum bilgisi yerine dördüncü parametresi ile gösterilen nesnedeki durumu kullanması dışında initstate işlevi gibi davranır.
int setstate_r
(char *restrict               durum-tamponu,
 struct random_data *restrict tampon)
işlev
setstate_r işlevi genel durum bilgisi yerine ikinci parametresi ile gösterilen nesnedeki durumu kullanması dışında setstate işlevi gibi davranır.
Önceki Üst Ana Başlık Sonraki
ISO C Rasgele Sayı İşlevleri Başlangıç SVID Rasgele Sayı İşlevleri
Bir Linux Kitaplığı Sayfası