Python’da rastgele (), randrange () ve randint () dahil olmak üzere rastgele ondalık sayılar ve tam sayılar oluşturma

Rastgele sayılar, Python standart kitaplığının rastgele modülündeki random(), uniform(), randange() ve randint() işlevleri kullanılarak oluşturulabilir.

Rastgele modül standart kitaplığa dahil edilmiştir, bu nedenle ek kurulum gerekmez. Tabii ki, onu ithal etmeniz gerekiyor.

Aşağıdaki bilgiler burada verilmiştir.

  • random.random()(0.0 ile 1.0 arasında kayan nokta sayısı)
  • random.uniform()(Herhangi bir kayan noktalı sayı aralığı)
  • Normal dağılım, Gauss dağılımı vb. izleyen rastgele sayılar üretin.
  • random.randrange()(İsteğe bağlı aralık ve adımın tamsayı)
  • random.randint()(Herhangi bir aralıkta bir tam sayı)
  • Eleman olarak rasgele sayılar içeren bir liste oluşturma
    • Rastgele kayan noktalı sayıların listesi
    • Tamsayı rasgele sayıların listesi
  • Rastgele sayı üretecini başlatın (rastgele sayı tohumunu düzeltin)

Bir listenin öğelerinin nasıl rastgele ayıklanacağı veya sıralanacağı ile ilgili aşağıdaki makaleye bakın.

random.random()(0.0 ile 1.0 arasında kayan nokta sayısı)

Rastgele modülün random() işlevi, 0,0 ile 1,0 arasında bir rasgele kayan noktalı kayan nokta sayısı üretir.

import random

print(random.random())
# 0.4496839011176701

random.uniform()(Herhangi bir kayan noktalı sayı aralığı)

uniform(a, b)Bu rasgele modülün işlevleri, aşağıdaki aralıklardan herhangi birinde rasgele sayıda kayan noktalı sayı kayan nokta türü üretir.

  • a <= n <= b
  • b <= n <= a
import random

print(random.uniform(100, 200))
# 175.26585048238275

İki bağımsız değişken daha büyük veya daha küçük olabilir; eğer eşitlerse, doğal olarak sadece o değeri döndürürler. Dönüş değeri her zaman bir kayan noktadır.

print(random.uniform(100, -100))
# -27.82338731501028

print(random.uniform(100, 100))
# 100.0

Argüman ayrıca bir kayan nokta olarak da belirtilebilir.

print(random.uniform(1.234, 5.637))
# 2.606743596829249

b değerinin aralığa dahil olup olmadığı, belgelendiği gibi aşağıdaki yuvarlamalara bağlıdır.
a + (b-a) * random.random()

Bitiş noktası değerinin b aralıkta olup olmadığı aşağıdaki denklemdeki kayan nokta yuvarlamasına bağlıdır.
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation

Normal dağılım, Gauss dağılımı vb. izleyen rastgele sayılar üretin.

Yukarıdaki rasgele() ve tek tip() işlevleri, tek biçimli olarak dağıtılmış rasgele sayılar üretir, ancak aşağıdaki dağılımı izleyen kayan noktalı sayılar üreten işlevler de vardır.

  • beta dağıtımı:random.betavariate()
  • üstel dağılım:random.expovariate()
  • gama dağılımı:random.gammavariate()
  • Gauss dağılımı:random.gauss()
  • lognormal dağılım:random.lognormvariate()
  • normal dağılım:random.normalvariate()
  • Von Mises dağılımı:random.vonmisesvariate()
  • Pareto dağılımı:random.paretovariate()
  • Weibull dağılımı:random.weibullvariate()

Her dağıtımın parametreleri argümanlarla belirtilir. Ayrıntılar için resmi belgelere bakın.

random.randrange()(İsteğe bağlı aralık ve adımın tamsayı)

randrange(start, stop, step)
Bu rastgele modülün işlevi, aşağıdaki öğelerden rastgele seçilen bir öğe döndürür.
range(start, stop, step)

range() ile olduğu gibi, start ve step argümanları atlanabilir. Atlanırlarsa, start=0 ve step=1.

import random

print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(random.randrange(10))
# 5

Argüman adımı, çift veya tek rasgele bir tamsayı veya üçün katı olan rasgele bir tamsayı üretecek şekilde ayarlanabilir.

Örneğin, eğer başlangıç ​​çift ise ve adım=2 ise, rastgele sadece aralıktaki çift tamsayılar elde edilebilir.

print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]

print(random.randrange(10, 20, 2))
# 18

random.randint()(Herhangi bir aralıkta bir tam sayı)

randint(a, b)
Bu rasgele modülün işlevi, aşağıdaki rasgele tamsayı int’yi döndürür.
a <= n <= b
randrange(a, b + 1)Buna eşdeğer; b değerinin de aralığa dahil olduğunu unutmayın.

print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74

Eleman olarak rasgele sayılar içeren bir liste oluşturma

Bu bölümde, eleman olarak rasgele sayılar içeren bir liste oluşturmak için standart kitaplığın rasgele modülünün nasıl kullanılacağını açıklayacağız.

Kayan noktalı kayan noktalı rasgele sayıların listesi

Öğeleri kayan noktalı rasgele sayılar olan bir liste oluşturmak için, rastgele() ve tek biçimli() işlevlerini liste anlama gösterimiyle birleştirin.

import random

print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]

Yukarıdaki örnekte, range() kullanılmıştır, ancak istenen sayıda eleman için listeler ve demetler de mümkündür. Liste kavramaları hakkında daha fazla ayrıntı için lütfen aşağıdaki makaleye bakın.

tamsayı int rastgele sayıların listesi

Öğeleri tamsayı rasgele sayılar olan bir liste oluştururken, yukarıdaki randange() ve randint() öğelerini liste anlama gösterimiyle birleştirmek, yinelenen değerlere neden olabilir.

print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]

Çoğaltma olmadan rastgele bir tamsayı dizisi yapmak istiyorsanız, random.sample() kullanarak rastgele bir aralıkla range() öğelerini çıkarın.

print(random.sample(range(10), k=5))
# [6, 4, 3, 7, 5]

print(random.sample(range(100, 200, 10), k=5))
# [130, 190, 140, 150, 170]

random.sample() hakkında daha fazla bilgi için lütfen aşağıdaki makaleye bakın.

Rastgele sayı üretecini başlatın (rastgele sayı tohumunu düzeltin)

Rastgele modülün seed() işlevine rasgele bir tamsayı vererek, rasgele sayı tohumu sabitlenebilir ve rasgele sayı üreteci başlatılabilir.

Aynı tohumla başlatmadan sonra, rastgele değer her zaman aynı şekilde oluşturulur.

random.seed(0)
print(random.random())
# 0.8444218515250481

print(random.random())
# 0.7579544029403025

random.seed(0)
print(random.random())
# 0.8444218515250481

print(random.random())
# 0.7579544029403025
Copied title and URL