Ana içeriğe geç

Numpy Kullanarak Rastgele Sayı Üretici Eğitimi

Numpy'nin random modülü, sözde rastgele sayı üretimine dayanan bir dizi işlev sunar. Rastgele, mantıksal olarak öngörülemeyen şey demektir.
· 4 dk. oku

Yapay Zeka ile Keşfedin

Numpy'nin random modülü, sözde rastgele sayı üretimine dayanan bir dizi işlev sunar. Rastgele, mantıksal olarak öngörülemeyen şey demektir.

np.random.seed() İşlevi

Bu örnekte, bir yazı tura atışı simüle edeceksiniz. 0 ile 1 arasında sayı çeken ve bu aralıktaki tüm sayıların eşit olasılıkla ortaya çıkmasını sağlayan np.random() işlevini kullanacaksınız.

Çektiğiniz sayı 0,5'ten küçükse, ki bunun olasılığı %50'dir, sonuç yazı; aksi halde tura dersiniz. Sonuçların Ya (Yazı) ya da Hayır (Tura) olduğu bu tür sonuca Bernoulli deneyi denir.

Sözde rastgele sayı üretimi, tohum (seed) adı verilen bir tamsayıyla başlar ve ardından ardışık sayılar üretir. Aynı tohum aynı rastgele sayı dizisini verir, bu nedenle "sözde" rastgele sayı üretimi denir. Yeniden üretilebilir kod istiyorsanız, np.random.seed() işlevini kullanarak rastgele sayı üretecini tohumlamak iyi bir uygulamadır.

Yazı tura atışlarını yapmak için NumPy'ı içe aktarır, rastgele sayı üretecini tohumlar ve ardından dört rastgele sayı çekersiniz. Kaç rastgele sayı istediğinizi size anahtar sözcüğüyle belirtebilirsiniz.

import numpy as np
np.random.seed(42)
random_numbers = np.random.random(size=4)
random_numbers
array([0.3745012, 0.95071431, 0.73199394, 0.59865848])

Elde ettiğiniz ilk sayı 0,5'ten küçüktür; dolayısıyla bu yazı, kalan üçü ise turadır. Bunu açıkça göstermek için, daha küçüktür işlemini kullanarak yazı için True, tura için False döndüren boolean değerlerden oluşan bir dizi elde edebilirsiniz.

heads = random_numbers < 0.5
heads
array([True, False, False, False], dtype=bool)

Son olarak, heads adlı boolean dizisini toplayarak yazıların sayısını hesaplayabilirsiniz; çünkü sayısal bağlamda Python True'yu bir, False'u sıfır olarak değerlendirir.

np.sum(heads)
1

Dört Rastgele Yazı Tura Atışını Simüle Etme

Aşağıdaki örnekte, madeni parayı dörder kez atmayı tekrar tekrar yapsaydık dört yazı gelme olasılığını bilmek istiyoruz. Bunu bir for döngüsüyle yapabiliriz.

Önce sayacı sıfıra ayarlıyoruz. Ardından dört atıştan oluşan deneyi 10.000 kez tekrar ediyoruz. Belirli bir denemede dört yazı geldiyse sayacı bir artırıyoruz.

Peki dört yazının birden gelme olasılığı nedir? Tümünün yazı geldiği sayı, toplam deneme sayısına bölünür. Sonuç yaklaşık 0,06'dır.

n_all_heads = 0

# Initialize number of 4-heads trials
for _ in range(10000):
         heads = np.random.random(size=4) < 0.5
         n_heads = np.sum(heads)
         if n_heads == 4:
             n_all_heads += 1

n_all_heads / 10000
0.0621

Rastgele Sayı Üretiminin Etkileşimli Örneği

Bu örnekte, sıfır ile bir arasında çok sayıda rastgele sayı üretecek ve sonra sonuçların bir histogramını çizeceğiz. Sayılar gerçekten rastgele ise histogramdaki tüm çubuklar (yaklaşık olarak) eşit yükseklikte olmalıdır.

Bu örnek için şunlara ihtiyacınız olacak:

  • Tohum olarak 42 kullanarak np.random.seed ile rastgele sayı üretecini tohumlayın.
  • rastgele sayıları depolamak için 100.000 elemanlı, random_numbers adlı boş bir dizi başlatın. Bunu yapmak için mutlaka np.empty(100000) kullanın.
  • np.random.random() kullanarak 100.000 rastgele sayı çekmek ve bunları random_numbers dizisine kaydetmek için bir for döngüsü yazın. Bunu yapmak için range(100000) üzerinde döngü kurun.
  • random_numbers için bir histogram çizin. Bu durumda yalnızca rastgele sayı üretecini kontrol ettiğimizden eksenleri etiketlemek gerekli değildir.
# Seed the random number generator
np.random.seed(42)

# Initialize random numbers: random_numbers
random_numbers = np.empty(100000)

# Generate random numbers by looping over range(100000)
for i in range(100000):
    random_numbers[i] = np.random.random()

# Plot a histogram
_ = plt.hist(random_numbers)

# Show the plot
plt.show()

Yukarıdaki kodu çalıştırdığımızda aşağıdaki sonucu üretir:

histogram

Kendiniz deneyin.

Rastgele sayı üreteçleri ve hacker istatistikleri hakkında daha fazla bilgi için, Python'da İstatistiksel Düşünme (Bölüm 1) adlı dersimizden bu videoyu izleyin.

Bu içerik, Justin Bois'in DataCamp’in Python'da İstatistiksel Düşünme (Bölüm 1) dersinden alınmıştır.

Konular

İlgili