Rand() C Dilinde İşlev

Rand Function C Language



C dilinde, sıra() işlev için kullanılır Sahte Numara Üreticisi (PRNG) . Rand() işlevi tarafından üretilen rastgele sayılar gerçekten rastgele değildir. Periyodik olarak tekrar eden bir dizidir, ancak periyot o kadar büyüktür ki, onu görmezden gelebiliriz. NS sıra() işlevi, sonraki rastgele sayıyı ve sonraki yeni çekirdeği hesaplamak için kullanılan bir tohum değerini hatırlayarak çalışır. Bu yazıda, rastgele sayıların nasıl üretilebileceğini ayrıntılı olarak tartışacağız. sıra() işlev. Öyleyse başlayalım!

Başlık dosyası:

stdlib.h







Sözdizimi:

int rand (boş)



Dönüş değerleri:

Bu işlev, dizideki bir sonraki sözde rasgele sayıyı döndürür. Sayı serisinin aralık değeri 0 ile RAND_MAX arasındadır. RAND_MAX içinde tanımlanan bir makrodur stdlib.h değeri maksimum değer olan ve rand() işleviyle döndürülebilen başlık dosyası. RAND_MAX değeri, C kitaplıklarına bağlı olarak daha büyük ancak 32767'den az değil.



//Örnek1.c

#Dahil etmek
#Dahil etmek

intana()
{

intben;

baskı ('10 Rastgele Sayı => ');

için(ben=0;ben<10;ben++)
{
baskı ('%NS ', sıra ());
}

baskı (' ');
dönüş 0;
}


Örnek1.c'de, for döngüsünün her yinelemesinde rand() işlevini çağırır ve işlevin dönüş değerini yazdırırız. Rand() fonksiyonunun değer dizisi, programı her çalıştırdığımızda aynıdır. Varsayılan olarak, Rand işlevinin çekirdeği 1'e ayarlanmıştır.





Rand işlevi için tohumu şu şekilde ayarlayabiliriz: srand() işlev. Tohum yalnızca bir kez ve ilk seferden önce ayarlanabilir. sıra() işlev çağrısı.

srand() işlevi:

Başlık dosyası:

stdlib.h



Sözdizimi:

int srand (imzasız int tohum)

Argümanlar:

Bu işlev 1 argüman alır

tohum: Yeni bir sözde rasgele sayı dizisi için tohum olarak kullanılan bir tamsayı değeri.

Dönüş değerleri:

Hiçbiri

//Örnek2.c

#Dahil etmek
#Dahil etmek
#Dahil etmek

intana()
{

intben;

srand ( zaman (0));

baskı ('10 Rastgele Sayı => ');

için(ben=0;ben<10;ben++)
{
baskı ('%NS ', sıra ());
}

baskı (' ');
dönüş 0;
}


Örnek2.c'de, Rand() işlevi tarafından oluşturulan rasgele sayı dizisinin ilk tohumunu ayarlamak için srand() işlevini kullandık. Program her çalıştırıldığında farklı bir sıra oluşturulur. srand() içinde, time(0) işlevi (içinde bildirildi zaman.h başlık dosyası) tohum olarak kullanılır. Bu time(0) işlevi, çağdan (00:00:00, 1 Ocak 1970) bu yana geçen saniye sayısını döndürür. Programı aynı saniyede çalıştırırsanız, bu yine de aynı dizileri üretebilir.

//Örnek3.c

#Dahil etmek
#Dahil etmek
#Dahil etmek

intana()
{

intben;

srand ( zaman (0));

baskı ('1 ile 10 arasında 10 Rastgele Sayı=> ');

için(ben=0;ben<10;ben++)
{
baskı ('%NS ',( sıra () %10) + 1);
}

baskı (' ');
dönüş 0;
}


Örnek3.c'de 1 ile 10 arasında rastgele sayıların nasıl üretilebileceğini gördük.

//Örnek4.c

#Dahil etmek
#Dahil etmek
#Dahil etmek

intana()
{

intben,maksimum,dk;

baskı ('Min değeri girin =>');
tarama ('%NS', &dk);
baskı ('Maks değeri girin =>');
tarama ('%NS', &maksimum);

Eğer(dk>maksimum)
{
baskı ('Minimum değer maksimum değerden büyük ');
dönüş 0;
}

srand ( zaman (0));


baskı ('%d ve %d=> arasında 10 Rastgele Sayı ',dk,maksimum);

için(ben=0;ben<10;ben++)
{
baskı ('%NS ',( sıra () % (maksimum-dk+1)) +dk);
}

baskı (' ');
dönüş 0;
}


Example4.c'de kullanıcıdan aralığı aldık ve bu aralık içinde rastgele bir sayı ürettik. Formül: Rand ()% (maks - min +1)) + min

//Örnek5.c

#Dahil etmek
#Dahil etmek
#Dahil etmek

intana()
{

intben;

srand ( zaman (0));

baskı ('0.0 ile 1.0 arasında 10 Rastgele Sayı=> ');

için(ben=0;ben<10;ben++)
{
baskı ('%F ',((batmadan yüzmek) sıra () /RAND_MAX));
}

baskı (' ');
dönüş 0;
}


Örnek5.c'de, float 0.0 ile 1.0 arasında nasıl rasgele sayılar üretebileceğimizi gördük. Formül: (kayan)Rand() /RAND_MAX)

//Örnek6.c

#Dahil etmek
#Dahil etmek
#Dahil etmek

intana()
{

intben;
batmadan yüzmekmaksimum,dk;

baskı ('Min değeri girin =>');
tarama ('%F', &dk);
baskı ('Maks değeri girin =>');
tarama ('%F', &maksimum);

Eğer(dk>maksimum)
{
baskı ('Minimum değer maksimum değerden büyük ');
dönüş 0;
}

srand ( zaman (0));

baskı ('%f ve %f arasında 10 Rastgele Sayı => ',dk,maksimum);

için(ben=0;ben<10;ben++)
{
baskı ('%F ',dk+ ((batmadan yüzmek) sıra () /(RAND_MAX/(maksimum-dk))));
}

baskı (' ');
dönüş 0;
}


Örnek6.c'de, kullanıcıdan aralığı aldık ve bu aralık içinde (her ikisi de dahil) rastgele bir sayı oluşturduk. Formül: min + ((float)rand() /(RAND_MAX/(max – min)))

Çözüm:

Bu yazıda, rastgele sayıların nasıl oluşturulabileceğini öğrendik. sıra() ve srand() işlev. Rand işlevi tarafından üretilen rastgele sayıların kalitesi hakkında hiçbir garanti yoktur, ancak gündelik kullanım için yeterince iyidir.