10 Aralık 2013 Salı

random Modülü


Python'daki modüllerden birisi de random modülüdür. Bu yazımızda da random modülünü inceleyeceğiz.

Program yazarken zaman zaman rastgele sayılara ihtiyaç duyarız ve bunun için bilgisayara rastgele bir sayı ürettirmemiz gerekir. Bu rastgele olacak olan durum; bir listeden rastgele bir eleman seçme, belli bir aralıkta rastgele sayı tutma gibi farklı durumlar olabilir.

Biz burada random modülü için en çok kullanılan metotlara değineceğiz; ancak siz daha fazlasını merak ediyorsanız. Etkileşimli kabukta
>>>import random
>>>help (random)
komutlarını yazdığınız zaman, açıklamalarıyla birlikte metotları görebilirsiniz. Aşağıdaki en çok kullanılan metotları hem açıklayıp hem de etkileşimli kabuk üzerinden çalıştırarak görelim.

Random

Modülün bu metodunu kullandığımız zaman 0 ile 1 arasında rastgele bir sayı üretilir. Üretilen bu sayıda dikkat edilmesi gereken bir nokta vardır. Üretilen bu sayı 0 olabilirken 1 olamaz; yani [ 0, 1 ) aralığında oluşmaktadır. Etkileşimli kabuktan gösterecek olursak
>>>import random
>>>random.random()
0.8759562487514273
şeklinde oldu. Burada bize üretmiş olduğu rastgele sayı olduğu için siz denediğinizde başka bir sayı oluşması muhtemeldir.

Randint

Random ile ürettiğimiz sayı float tipinde bir sayı idi. Biz integer tipinde bir sayı istiyorsak bu durumda randint metodunu kullanabiliriz. Bu metot kullanılırken başlangıç ve bitiş aralık değerleri verilir; ancak bu durumda bitiş değeri de rastgele sayı olarak tutabilir. Yani [başlangıç, bitiş] aralığı kullanılır.
>>>random.randint(1, 3)
3

Choice

Eğer önceden belirlediğimiz bir listeden rastgele bir eleman seçmek istiyorsak, bu durumda kullanacağımız metot choice metodudur.
>>>random.choice(['sonbahar', 'kış', 'ilkbahar', 'yaz'])
'ilkbahar'

Shuffle

Shuffle fonksiyonu ile elimizdeki bir listeyi karıştırabiliriz. Böylelikle listedeki elemanların yerleri rastgele atanmış olur.
>>>rakamlar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>>random.shuffle(rakamlar)
>>>rakamlar
[1, 7, 3, 8, 9, 4, 0, 5, 6, 2]

Randrange

Başlangıç, bitiş ve artış miktarını belirleyerek rastgele sayı üretmek istiyorsak bu durumda kullanabileceğimiz metot ise randrange metodudur. Random metodunda bahsetmiş olduğumuz [ başlangıç, bitiş ) aralığı burada da geçerlidir.
Kullanımı biraz esnektir. Şu şekilde:
randrange(başlangıç, bitiş, artış) : [ başlangıç, bitiş ) aralığında başlangıçtan itibaren artış miktarının katında herhangi bir değer alır.
randrange(başlangıç, bitiş ) : [ başlangıç, bitiş ) aralığından bir tam sayı değeri alır.
randrange(bitiş) : [ 0, bitiş ) aralığından rastgele bir tam sayı değeri alır.
Şimdi bu üç kullanım için örnek verelim:
# [1,10) aralığında tek bir sayı tutulur.
>>>random.randrange(1, 10, 2)
7

# Sadece başlangıç ve bitiş aralığını verirsek artış miktarı 1 kabul edilir.
>>>random.randrange(1, 10)
4

# Sadece bitiş değeri verilirse [0,bitiş) aralığında değer tutulur.
>>>random.randrange(10)
2

Alıştırmalar

1) 0 ile 100 arasında tutulan bir sayıya göre kullanıcıyı "Aşağı", "Yukarı" diye yönlendirecek şekilde bir Sayı Tahmin Oyunu yazınız.

2) 2 adet zar atılsın ve her iki zarın değeri de 6 olduğunda program dursun. İki zar da 6 gelene kadar kaç kez zar atıldığını bildiren programı yazınız.

Not: Örnek olması açısından buradaki iletiyi inceleyebilirsiniz.

Kaynaklar
http://docs.python.org/2/library/random.html
http://en.wikibooks.org/wiki/Choose_Your_Own_Pyventure/Random_and_PRNGs
http://www.cs.swarthmore.edu/~adanner/cs21/f09/randomlib.php
Mustafa Başer - Python Kitabı

0 yorum :

Yorum Gönder