"Enter"a basıp içeriğe geçin

Random

Random Sayı oluşturmak: Eskiden rand fonksiyonlarıyla rastgele sayı oluştururduk. Ancak bu sayıyı oluştururken belli algoritmalar kullanmak isteyebiliriz. Yeni cpp standartları sayesinde bu işlem daha pratik hale geldik. Aşağıdaki kalıbı kullanarak  tanımladığınız aralıkta rastgele bir sayı oluşturabilirsiniz.

Görüldüğü gibi 1-6 arasında rastgele sayılar oluştu

Bu kalıpla her zaman rastgele bir sayı oluşturabiliriz. Eğer istersek diğer motorları kullanarak da rastgele sayılar oluşturabiliriz.

Random kullanımını detaylı incelemek istersek:

Random Sınıfı: Rastgele değer üretmek amacıyla oluşturulmuş bir sınıftır. Öncelikle bu sayıyı üretmek için bir motor oluşturmak gerekir. Motorlar içlerinde algoritmalar barındırır ve yollanan sayıya göre sayılar üretirler. Bir çok motor türü vardır. Bu motorlar belirli birtakım aritmetiksel işlemler yaparak bir sayı üretirler. Ancak içine aynı sayıyı girdiğinde her seferinde aynı çıktıyı verir.

En çok kullanılan motor  default_random_engine motor_adı(x) ‘dir. x değerine göre bir sayı üretir.  Mesela parametre olarak 5 girersek her zaman aynı değeri verir. Çünkü yaptığı işlemler sabittir.

Her seferinde aynı değeri  veren bir motor bizim ihtiyacımıza uygun olmayabilir. Her seferinde farklı sayılar üretmesini isteyebiliriz. Bu duruma çözüm olarak, bilgisayar saatini kullanarak işlem yapılması fikri ortaya çıkmıştır. <ctime> sınıfı zamanla ilgili işlemler yapmamızı sağlayan bir sınıftır. Bu sınıfa detaylı olarak girmeyeceğim. Bilmemiz gereken şey, time(0) şu anki zamanı ifade eden bir değer döndürür.  Ancak bu değer bizim direk kullanabileceğimiz bir tipte değildir bunu önce int’e çevirmeliyiz.

Bu işlemi static cast kullanarak yaparız. static_cast<unsignet int>(time(0)) diyerek, şu anki sistem saatimize göre bir değer elde ederiz. Artık bu zamana bağlı ifadeyi motorumuzda kullanabiliriz.

default_random_engine motor(static_cast<unsignet int>(time(0))); Sistem zamanımıza bağlı rastgele sayılar üreten bir motor elde etmiş olduk. Ama bu değer -32000 ile +32000 arasında herhangi bir tamsayı olabilir.

Sıra geldi  bu sayının istediğimiz aralıkta olmasını sağlamaya

uniform_int_distribution<unsignet int> randomInt(1,6); //Bu dönüştürücüyü kullanarak randomInt sayısını 1-6 arası (1 ve 6 dahil) olacak şekilde ayarladık.

En sonunda a=randomInt(motor); diyerek motorumuz ile sayı aralığımızı bağladık ve 1-6 aralığında, zamana bağlı rastgele bir sayı üretmiş olduk.

    Bir cevap yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir