Merhaba.
Bugun c ve Sistem programcıları derneğinde Necati ergin tarafından aldığımız derste ise c de rasgele sayı üretmeyi işledik. kodu aşağıda veriyorum.
kodda önişlemci komutu olarak <time.h> i ve <stlib.h> ı extradan ekliyoruz. tabili printf kullandığımızdan <stdio.h> başlık dosyasınıda ekliyoruz.
alttaki size 100 ile kaç farklı rastgele sayı üreteceğinizi seçiyorsunuz. ilgiç yan ise az öncede bahsettiğim <time.h> başlık dosyası. Bu dosya programı her açtığınızda rastgele sayı üretilmesini sağlıyor.
Şöyle yani; Mesela normalde rastgele sayı üretmek isteseniz, örnek veriyorum 465466545 sayısının karekökünü alıp ortadan 4 rakamı çekerdiniz. ancak bu alogritimada (kitap yanımda değil tam hatırlamıyorum rakam veremeyeceğim ama) belli bir rakamdan başlıyor. ancak <time.h> başlık dosyasını ekleyip random kısaltması olan rand komutusu srand olarak kullanıpta kodu aşağıdaki gibi derlediğimizde
srand((unsigned)time(0));
rasgele sayı üretiliyor. Peki time zamanla ne alakası var? Hemen söyliyeyim. Zaman bilgisayarın standart saati olan 1-1-1970 yani C nin oluşum tarihini işaret ediyor. burdaki saniye o günden bu güne kadar olan saniyeyi varsayıyor. Eğer program saniyede 2 kez çalıştırılmaz ise, program her açıldığından rastgele sayı üretimi geçekleşiyor.
Fazla uzatmıyor kodu veriyorum;
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <time.h> #define SIZE 100 int main() { int a[SIZE]; int k; int sum = 0; srand((unsigned)time(0)); for (k = 0; k < SIZE; ++k) a[k] = rand() % 1000; ////////////////////////////////////// for (k = 0; k < SIZE; ++k) printf("%3d ", a[k]); printf("n*******************************************************************************n"); for (k = 0; k < SIZE; ++k) sum += a[k]; printf("toplam = %dn", sum); return 0; }
arkadaşlar bana tanımladığım sitrink faonksyonunun içinde raskele seçmesi gereki onu nasıl yapcaz
teşekkür ederim Alican
Allah sana işlerini kolaylıkla yapabileceğin hayırlı bir ömür versin.
Bu yöntem ile uniform dağılım elde edilebiliyor sanıyorum. Gauss dağılımlı rastgele sayı üretmenin bir yolu var mı C'de?
teşekkür ederim ödevimde çok işime yarıycak bu random number generating codes i 😀