25 Mart 2022 Cuma

Çeşitli dağılımlara göre rastgele sayılar veya seriler oluşturma - Generating random numbers or series of various distributions

Python'da çeşitli dağılımlara göre (mesela normal ya da tekdüze dağılıma göre) rastgele sayılar veya seriler oluşturma nasıl olur?

Bakalım:

Şu kod tekdüze dağılıma göre bir sayı veriyor (vereceği sayıyı default olarak 0'la 1 arasından seçiyor):

import numpy as np
np.random.uniform()

bu da yine tekdüze dağılımda ama belirli bir aralıkta bir sayı veriyor:

np.random.uniform(low=0, high=10)

Array oluşturmak istersek şu kodu giriyoruz: (ilk iki sayı sınırları, sondaki sayı kaç elemanlı olacağını gösteriyor)

np.random.uniform(0, 10, size=4)

Birden fazla array oluşturmak istersek de: (mesela her biri 3 elemanlı 2 array)

np.random.uniform(0, 10, size=(2, 3))

Bu array'leri histogram'da göstermek içinse:

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
a = np.random.uniform(0, 10, 10000)
sns.histplot(a)
plt.show()

Bir de aynısını normal dağılımla yapalım: (tek değişiklik "uniform" yerine "normal" yazıyoruz. bu yukarıdakiler için de geçerli.)

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
a = np.random.normal(0, 10, 10000)
sns.histplot(a)
plt.show()

Peki iki veya üç boyutlu bir düzlemde rastgele noktalar oluşturmak istersek nasıl bir kod yazıyoruz? O da burada:

from matplotlib import pyplot as plt
import numpy as np
# Generate 100 random data points along 3 dimensions
x, y, scale = np.random.randn(3, 100)
fig, ax = plt.subplots()
# Map each onto a scatterplot we'll create with Matplotlib
ax.scatter(x=x, y=y, c=scale, s=np.abs(scale)*500)
ax.set(title="Some random data, created with JupyterLab!")
plt.show()

Hiç yorum yok:

Yorum Gönder