stdlib.h kütüphanesi ile birlikte kullanılan rand() fonksiyonu rastgele sayı üretmek amacı ile kullanılır. Ayrıca diğer bir kullanımında srand(time(NULL)) şeklindedir. ikisi de aynı işlemi yapar. Ama aralarında ufak bir fark vardır. rand() fonksiyonunu kullanarak rastgele sayı ürettiğimiz zaman program içerisinde her zaman aynı değeri verecektir bize. Ürettiğimiz sayıyı daha da rastgeleleştirmek için srand() fonksiyonunu kullanırız.
Srand(time(NULL)) Kullanımı
srand(time(NULL)) komutu C dilinde rastgele sayı üretirken her seferinde farklı sayı üretmemizi sağlar. Fonksiyonun rastgele sayı üretme mantığı ise içinde bulunduğunuz zamana göre sayı üretmektir. time(NULL) ifadesi 1.1.1970 tarihinden bugüne dek geçen zamanı saniye cinsinden ölçer. Bu değer sürekli değiştiği için üretilen sayı sadece rand() fonksiyonu kullanılarak üretilen sayıya göre daha rastgele bir değerdir.
Eğer bu komutu kullanmazsak bellekte en son kalan sayı atamak istediğimiz sayıya atanacaktır. Srand(time(NULL)) komutunu kullanabilmek için <time.h> kütüphanesini dahil etmemiz gerekir. Bu komutu rand fonksiyonunu kullanmadan önce herhangi bir yere yazabilirsiniz.
C programalama dilinde random(rastgele) sayı üretmenin pek çok yolu veya şartı olabilir.
Aşağıdaki örnekte herhangi bir şart yok. Herhangi bir sayısı RASTGELE olarak karşımıza çıkarıyor.
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int a; srand(time(NULL)); a=rand(); printf("%d",a); }
Aşağıdaki örnekte 1-50 arasındaki sayılardan rastgele 1 tanesini görüyoruz.
a=rand()%50+1;
İfadesi 1-50 arasında bir sayı üretmemizi sağlar. Ürettiğimiz sayının 50’de modunu aldığımızda yeni sayımız 1-49 arasında olacaktır. Eğer buna 1 eklersek, sayı aralığımız 1-50 olacaktır.
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int a; srand(time(NULL)); a=rand()%50+1; printf("%d",a); }
Aşağıdaki kodda ise 1-100 arasındaki 6 sayının ortalamasını buluyoruz.
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int a,i,sum=0; float avg; srand(time(NULL)); for(i=1;i<6;i++) { a=rand()%100+1; sum=sum+a; } avg=sum/6.00; printf("%.2f",avg); }
kanka ben bu işlemin süresini nasıl bulabilirim
en aciklayicisi bu olmus