Sonsuz.us sitesinde bolca olasılık sorusu var, bunların bazılarını python programlama ile çözüp örnekler sunacağım. Böylece random kütüphanesinin kullanımı ve olasılık sorularına uygulanışını görmüş olacağız.
Olasılık sorularında yapmamız gereken olayı doğru bir biçimde kodlayıp defalarca simülasyon tekrarlamamızdır. Yeterli sayıda simülasyon bize yaklaşık sonucu verecektir.
İlk sorumuz yine basit bir olasılık sorusu. Rastgele iki noktasından kırılan bir çubuğun parçalarının üçgen oluşturma olasılığı nedir?
Üçgen olma kuralı bildiğiniz üzere her hangi iki kenarın toplamı diğer kenardan büyük olma zorunluluğu olmasıydı. Programın yapması gerekense defalarca iki rastgele noktadan kırıp oluşan parçaları karşılaştırmak.
import random
ucgen=0
for i in range(10000):
nokta = [random.random(),random.random()]
nokta.sort()
a,b,c = nokta[0],nokta[1]-nokta[0],1-nokta[1]
if a+b>c and a+c>b and b+c>a:
ucgen+=1
print(ucgen/10000)
Yeni bir olasılık sorusu olarak şunu ekleyebiliriz.
10 tane madeni paranın 8 tanesi hilesizdir, 2 tanesinin ise her iki yüzü de turadır. Bu 10 madeni paradan bir tanesi rasgele seçilir ve 2 defa yazı-tura atılırsa, her ikisinin de tura gelme ihtimali kaçtır?
import random
paralar = [["yazı","tura"],["yazı","tura"],["yazı","tura"],["yazı","tura"],["yazı","tura"],["yazı","tura"],["yazı","tura"],["yazı","tura"],["tura","tura"],["tura","tura"]]
olay = 0
for i in range(10000):
para = random.choice(paralar)
tura = 0
for j in range(2):
yuz = random.choice(para)
if yuz == "tura":
tura = tura + 1
if tura == 2:
olay = olay + 1
print(olay/10000)
İki sayı birbirinin kendisi hariç bölenleri toplamına eşitse bu sayılara arkadaş sayılar denir. (1 dahil)
En küçük arkadaş sayılar 220 ve 284 tür. Neden? Çünkü 220’nin bölenleri olan 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 ve 110 u topladığımızda 284 elde ederiz. 284’ün bölenlerini topladığımızda ise -evet, doğru tahmin ettiniz- 220 elde ederiz. İşte gerçek arkadaşlık.
Python programlama ile 10.000 e kadar olan arkadaş sayıları bulalım. (Bu sayıyı değiştirebilirsiniz.)
def bolenler(n):
return sum([i for i in range(1,n//2+1) if n%i==0])
arkadas = dict()
for sayi in range(1,10000):
bt = bolenler(sayi)
if sayi==bolenler(bt) and sayi<bt:
arkadas[sayi]=bt
print(arkadas)
Eğer bir sayının kendisi hariç tam bölenleri toplamı sayıdan büyükse o sayıya zengin sayı diyoruz. Örneğin 12 nin bölenleri 1,2,3,4,6 nın toplamı 16>12 olduğu için zengin sayıdır. En küçük tek zengin sayı nedir?
Basit bir programla bunu bulabiliriz,
def bolenler(n):
return sum([i for i in range(1,n//2+1) if n%i==0])
sayi = 1
while sayi>bolenler(sayi):
sayi+=2
print(sayi)
Uzunluğu 2 veya daha büyük olan ve aynı zamanda tersten ve düzden yazılışları aynı olan karakter dizilerine palindrom denilmektedir. Örneğin “aaa”, “aba”, “cc” birer palindrom iken, “acaba”, “abc”, “a” birer palindrom değildir. Bir karakter dizisinin içerisinden ardışık olarak seçilen herhangi bir parçaya ardışık alt dizi denilmektedir. Örneğin “acaba” dizisi için “aca”, “ab” birer ardışık alt dizi iken, “cb”, “aaa” ardışık alt dizi değildir. 4 karakter uzunluğunda, ardışık alt dizilerinin hiçbiri palindrom olmayan kaç farklı karakter dizisi vardır? [Alfabede 29 karakter vardır]
Sorumuz bu. Elbette çözmek için başka yöntemler var ama estetik bir program parçasını da eklemek istedim.
sonuc = 0
for a in range(29):
for b in range(29):
for c in range(29):
for d in range(29):
if c != d and b != c and a != b and b != d and a != d:
sonuc += 1
print(sonuc)
1966 yılında, Amerika’nın tanınmış yalan makinesi uzmanı Clee Backster, güvenlik görevlilerine poligraf aygıtının kullanımı eğitimini verdiği okulunda uykusuz bir gece daha geçirdi. Sonra sırf eğlence olsun diye, yalan makinesinin elektrotlarını kocaman yapraklı tropikal bitkisinin üzerine yerleştirdi. Yalan makinesi çeşitli korku, sevinç, şaşkınlık gibi durumların elektriksel değişimlerini ölçtüğüne göre, belki bitki de su dökünce seviniyordur diye alaylı alaylı güldü.
Bitkiyi suladığında galvanometre zikzaklar çizerek aşağı doğru indi. Oysa yukarı doğru bir hareket bekliyordu Backster. Yaprağını sıcak kahveye soktuğunda da beklediği tepkiyi görmedi. Sonunda kibriti alıp bitkiyi yakmayı düşündüğünde her şey değişti. Bitki çılgınca galvanometrenin ibresini tavan yaptırdı. İnanamadı Backster. “Nasıl yani?” dedi kendi kendine, “Bitki düşüncelerimi mi okudu?”.
İnsanlık tarihinin önünde yeni bir dünya açılıyordu artık. Deneyler deneyleri kovaladı. Bitkilerin sadece düşünceleri okumakla kalmayıp çevrelerindeki her şeyi hissettikleri de çıktı ortaya. Kaynar suya atılan karideslerin ölümlerini, eline iğne battığında duyulan acıyı da hissediyordu bitkiler. Hatta kilometrelerce ötede olunsa bile yaşanan sevinç ve üzüntüleri de hissediyordu. Hatta korkudan baygınlık bile geçiriyordu.
Bir gün şehir dışından gelen bir botanikçi bayan içeri girdiğinde bütün bitkiler sessizleşti. Hiç birinden tepki gelmiyordu. Sanki hepsi birden sessizliğe bürünmüştü. Taaa ki o bayan havaalanından uçağa binip gittikten 45 dakika sonra yeniden tepki vermeye başladılar. Bayan botanikçinin bitkileri kurutup ölçümler yaptığını öğrendiği zaman anladı Backster, bayanı görünce bitkilerin korkudan bayıldıklarını.
Bir deney tasarladı. 6 yardımcısına aynı gece aynı saatlerde yapmak üzere farklı görevler verdi. Görevlerden biri gece yarısı gelip laboratuvardaki bitkilerden birini söküp parçalamaktı. Ertesi gün o gece bitkiyi parçalayan yardımcı içeri girdiğinde bütün bitkiler çılgınlar gibi haykırmaya başladı (galvanometrelerin ibrelerinin tavan yapmasını böyle adlandırıyor Backster). Bu deneyden anlaşıldı ki bitkiler sadece hissetmiyor, aynı zamanda hafızaları da var. Ve Amerika’da bazı adlî vakalarda bitkilerin şahitliğine başvurulmaya başlandı. Bitkiler asla yanlış sonuç vermiyordu çünkü yalan nedir bilmiyorlardı.
Bu çalışmalar makale olarak yayınlanmaya başlayınca dünyanın dört bir yanından bilim insanları konu üzerinde çalışmalara başladılar. Sonuçlar akıl almaz.
Koparılmış bir yaprak, kendisine güzel sözler söylenmesi durumunda normal yapraktan aylarca daha uzun süre canlı kalabiliyor. 120 km mesafedeki bir acıyı, sevinci hissedebiliyor.
İnsanların düşüncelerini okuyabiliyor, kötülük yapanları hafızasına kaydedebiliyor. Aynı zamanda bu bilgileri diğer bitkilerle de paylaşıyor.
Kendisine kötü davranılan bitki üzüntüsünden intihar bile ediyor. Yanındaki bitkinin susuz kalması durumunda kendi suyunu onunla paylaşıyor.
Bitkiler, bütün canlılarla iletişim kurma konusunda bizim hayallerimizin ötesinde bir hassasiyete sahip. Her biri doğanın bir parçası. Belki bir gün onları daha iyi anlama imkânımız olursa bize tarihin bütün yaşanmışlıklarını bile anlatabilirler. Avatar filminin esin kaynağı da bu çalışmalar ve elde edilen sonuçları.
Bilelim ki dünyanın herhangi bir yerinde bir bitkiye kötü davranılırsa, bütün bitkiler bunu hissediyor.
Hani “Kirazlı Kaz Dağı değil” diyorlar ya, emin olun Kirazlı’da kesilen bir ağacın acısını sadece Kaz Dağlarında değil, Munzur’daki, Kuzey Ormanlarındaki, Salda’daki, Toroslardaki ağaçlar da hissediyor. Bir gün biz de hissedeceğiz…
Kaynak: Bitkilerin Gizli Yaşamı, Peter Tompkins/Christopher Bird, 1973, Sungur Yayınları, Çev: Sulhi Dölek. Derleyen: Osman Kutlu