Modüller | random

Sıradaki modülümüz 'random'. Bu modülü, rastgele verilerle çalışmak istiyorsanız kullanabilirsiniz. Yani random, daha çok rastgele işlemler için kullandığımız bir modüldür. dir(random) ifadesini terminale verip random modülü ile alakalı fonksiyonları görebilirsiniz. Bu yazıda sıkça kullanma ihtimaliniz olan fonksiyonları göstereceğim. 

Ben direkt olarak import random diyorum.

random.random()

Bu ifade, bu modülün en basit ifadesidir; time.time() gibi. random.random() dediğimiz zaman bize, 0 ile 1 arasında bir sonuç üretmesini bekleriz.

Gördüğünüz gibi değerimiz 0 ile 1 arasında geldi. İsterseniz bunu 5 defa tekrarlayan bir for döngüsü de yazalım. Örneklerimiz çoğalmış olur.

Gördüğünüz gibi her seferinde 0 ile 1 arasında değerler döndürüyor. Peki, bunu biraz modifiye edemez miyiz?

Yukarıda gördüğünüz gibi yaptığım tek şey random.random()*150 demek oldu. Bu sayede üretilecek olan değer aralığını 150'ye kadar çıkarmış oldum. Zaten çıktı kısmına bakarsanız artık 0 ile 1 arasında değerler yerine daha başka değerler görürsünüz.

random.randint()

Bu fonksiyonumuz ise belli bir aralık ister ve o aralıkta rastgele değerler üretir.

İlk değer başlangıç değeri, son değer bitiş değeridir. Burada ben, 10 ile 100 arasında rastgele değerler üretilmesini sağladım.

random.randrange()

Bu fonksiyon yine verilen aralıkta rastgele bir sayı oluşturur. Ancak 'step (atlama)' dediğimiz bir olay vardır ve bu, son değer olarak verilir. Bu fonksiyonun ilk değeri başlangıç, ikinci değeri bitiş ve üçüncü değeri de başlangıç ile bitiş arasındaki atlama sayısını ifade eder. Örneğimize bakarsak daha iyi anlarız.

for döngüsü ile 10 defa tekrarlanmasını istediğim bir yapı kurdum. Sonrasında 'randrange(0, 10, 2)' şeklinde bir ifade mevcut. Buradaki '0' değeri başlangıcı, 10 değeri de sonu ifade eder. Buraya kadar olan kısımda aslında şunu diyorum: "0 ile 10 arasında değerler üret." Son değerimiz ise '2'. Bunu yazdığınızda, üretilecek olan bu değerler, ilk değer baz alınarak ikişer ikişer atlanarak üretilmelidir.

Python, atlama değerinin 2 olduğunu görünce 0'dan başlayarak ikişer ikişer atlayıp rastgele sayılar yazdıracaktır. Ancak dikkat edelim: "10 değeri yani bitiş değeri buna dahil değildir". Zaten dikkat ederseniz hep 0 ile 9 arasında değerleri üretti. Hatta bir bakıma, 0 ile 10 arasındaki çift sayıları da bulmuş olduk. Elbette, o atlama değerini dilediğiniz gibi değiştirebilirsiniz.

random.uniform()

Bu fonksiyonumuz, random.randint() fonksiyonunun aksine tam sayı değil, ondalıklı sayılar (float) üretecektir. Aralarındaki tek fark budur. Yani burada da belli bir aralık değeri belirliyorsunuz ve uniform() fonksiyonu sizin için rastgele float sayılar üretiyor. İhtiyacınıza göre seçebilirsiniz.

random.choice()

Bu fonksiyon, bir liste içerisinden rastgele bir değeri seçmemize yarar. Zaten kelime anlamı da 'seçmek'tir. Bakalım.

random.choice() dedikten sonra parantezler arasına listenizin ismini (raffleMembers) yazmanız yeterli olacaktır. Dilerseniz bunu bir döngüye de sokabilirsiniz.

Bunu, normal bir string ifade için de uygulayabilirsiniz:

Gördüğünüz gibi bu defa verdiğim parametre basit bir string şeklinde. Ancak choice fonksiyonu bu string'i parçalara bölüp içerisinden rastgele bir karakteri seçti ve ekrana verdi.

random.choices()

Bu fonksiyon ise var olan değerlerden kaç adet seçeceğini belirlemenize olanak tanır. Örneğin bir çekiliş düzenliyorsunuz ve iki kazanan olsun istiyorsunuz. O zaman aşağıdaki basit kod parçası işinize yarayacaktır.

Dikkat ederseniz choices() dedikten sonra parantezler arasına bir liste verdim sonrasında 'k=2' şeklinde bir ifade koydum. Buradaki 'k', choices() fonksiyonuna ait bir değişkendir ve bu değişken sayesinde kaç seçim yapacağınızı belirleyebilirsiniz.

Ben, k=2 ifadesini verdim ve çıktı kısmında iki adet seçilen olduğunu görüyorsunuz. Elbette, bu değeri değiştirmekte özgürsünüz.

Peki, örneğin şans oyunlarındaki hileler nasıl yapılıyor? En basit hâlini vermeye çalışalım.

Liste ismini ve k değerini zaten biliyorsunuz. Ancak dikkat edelim; oraya 'weights=[]' şeklinde bir ifade koymuşum. Türkçe'deki anlamı 'ağırlık' olan bu parametre ile daha sık seçilmesini istediğimiz üyeye ait sıraya denk gelecek şekilde sayıyı büyük veriyoruz. Örneğin ben "Defne" isimli kişinin daha ağırlıklı olarak seçilmesini istiyorsam onun listedeki sırasına göre ona yüksek değer veririm. Listedeki her katılımcı '1' ağırlığında seçilecekken "Defne" üyesi 10 ağırlığında seçilecektir yani seçilme olasılığı daha fazla olacaktır. Zaten çıktı kısmına baktığınızda bunu net bir şekilde göreceksiniz.

random.shuffle()

Bu fonksiyon ile bir listeyi rastgele olacak şekilde karıştırabilirsiniz.

Aslında pratik olması bakımından bir sayısal loto çekilişi yapabilirsiniz.


Yayınlanma Tarihi: 2022-11-24 22:07:53

Son Düzenleme Tarihi: 2022-11-27 12:19:58