Gelişmiş Python Geliştirme Kursu
Bölüm
>
Seviye
Matematik Modülleri
Rastgele Modül
Amaç
Tarla inşaatı sırasında ortaya çıkabilecek hatalar ve aksaklıklar için simülasyonlar ve testler çalıştırmak amacıyla rastgele modülünü kullanın.
Ek bina geçidini geçtikten sonra, inşaatla ilgili nakliye, konut ve lojistik evrak işlerini yürüten bazı idari görevleri yürüten bir ofis bulunmaktadır. Mevcut verileri kullanarak bazı senaryoları çalıştırıp aksaklıkları ve ekipman arızalarını hesaplamak iyi bir fikir olacaktır. Bu konuda yardımcı olması için import random ile etkinleştirilen rastgele modülüne sahibiz.
Modül, çeşitli derecelerde rastgele çıktılar üretmek için kullanılır; bu sayede simülasyonlar çalıştırabilir veya hesaplamalarınıza/egzersizlerinize rastgele unsurlar ekleyebilirsiniz. Amacımız için aşağıdaki fonksiyonları kullanacağız:
random.seed(): Rastgele üretim için tohumu ayarlar, kullanmak istediğiniz tohum numarasını argüman olarak alır. Bu, verilen herhangi bir tohumla kullanılan rastgele fonksiyonun her seferinde aynı sonuçları üreteceği anlamına gelir. Bu, rastgele üretim üzerinde kontrol sağlamak ve belirli sonuçları yeniden oluşturabilmek için kullanılır.random.random():0ile1arasında rastgele bir ondalık sayı döndürür.random.randint(): İki(2) argüman alır, iki argümanın arasında (kendileri dahil) bir sayı üretir. Sonuç tam sayı olarak döndürülür.random.uniform(): Önceki fonksiyona benzer ancak tam sayı yerine rastgele bir ondalık sayı döndürür.random.triangular(): Önceki fonksiyona benzer fakat ekstra bir argüman olan mode adlı bir değişken içerir. Mode, rastgele aralıktaki iki sayı arasında bir sayı olmalıdır. Üretilen rastgele sayı, istatistiksel olarak mode değerine daha yakın olacak şekilde, ilk iki(2) argüman arasında tamamen rastgele bir sayı yerine elde edilir.random.choice(): Argüman olarak bir liste alır, listedeki rastgele bir öğeyi seçer.random.choices(): Başka bir listeden örneklenen rastgele bir liste oluşturur, üç(3) argüman alır: örneklemek istediğiniz liste, listedeki her öğeden ne kadar ağırlıkla örnekleme yapmak istediğinizi belirten başka bir liste ve son olarak, listeden kaç örnek almak istediğinizi belirten k adlı bir değişken. Alınan örnek sayısı, listenin uzunluğundan fazla olabilir çünkü atadığınız ağırlıklara göre yinelenen öğeler üretebilir.random.shuffle(): Argüman olarak bir liste alır ve listeyi rastgele karıştırır.random.sample(): İki argüman alır, örnekleme yapılacak liste ve alınacak örnek sayısı.random.choices()fonksiyonunun daha sadeleştirilmiş halidir.
Başlangıç olarak, ışıklı X işaretine doğru yürüyüp masaya dönün, read() fonksiyonunu kullanarak notu okuyun ve rastgele varyans içeren bir simülasyonu çalıştırmak için gereken veri noktalarını belirleyin. Ekipman arızasının simülasyonunu çalıştıracağız; not, rastgele üretim için hangi seed'in kullanılacağını ve örnekleme yapılacak listeyi size bildirecektir. random.seed() fonksiyonunu kullanarak notta belirtilen değeri girin.
Mavi halı üzerindeki karanlık X işaretine doğru yürüyüp masaya dönün, önceki notta belirtilen tarla alanlarını içeren sectors adlı sabit bir listeye sahibiz. Listedeki örneği almak için random.choice() değerini saklamak üzere selection adlı bir değişken oluşturun, şöyle: selection = random.choice(sectors). Gecikmelerden kaynaklanan hata payını simüle etmek için random.random() değerini saklayacak delay adlı başka bir değişken oluşturun.
Potansiyel ekipman arızasının yüzdesini üretmek için random.randint() değerini saklamak üzere defect adında bir değişken oluşturun. Bu iki sayı arasında bir yüzde üretmek için 0 ve 15 argümanlarını kullanın. selection, delay ve defect değişkenleri ayarlandıktan sonra, inşaatta olası problemlerin test edilmesi için kullanılacak veri noktalarını kaydetmek amacıyla, sırayla bu üç(3) değişkeni kullanarak önceden yazılmış write() fonksiyonunu çağırın.
Altın X işaretine doğru yürüyüp read() fonksiyonunu kullanarak projeksiyonlara devam edin; nottaki veriler malzemeler, miktarlar ve örnekleme verilerini içerecektir. Nottaki verileri kullanarak, malzeme türlerini içeren materials adlı sabit bir liste de dahil olmak üzere daha büyük bir simülasyon çalıştıracağız.
Kırmızı halı üzerindeki karanlık X işaretine doğru yürüyüp masaya dönün. Notta sunulan malzemelerin sırasına göre dört(4) sayı değerini saklayacak weights adlı bir liste oluşturun. Örneğin: weights = [400, 600 , -insert value-, -insert value-]
simulation adında bir değişken oluşturun ve random.choices() değerini saklayın; materials sabit listesini, oluşturduğunuz weights listesini ve notta belirtilen örnekleme birimlerini içeren k adlı bir listeyi ekleyin, şöyle: simulation = random.choices(materials, weights , k = insert sampling units). Verileri kaydetmek için, önceden yazılmış write() fonksiyonunu simulation değişkeni ile kullanın.
Yeşil halı üzerindeki karanlık X işaretine doğru yürüyüp masaya dönün, oluşturduğunuz simulation listesini karıştırmak için random.shuffle() fonksiyonunu kullanın, şöyle: random.shuffle(simulation). Bu, listeyi karıştıracaktır; liste doğrudan değiştirildiği için değeri saklamaya gerek yoktur. Ardından, üç(3) rastgele öğeden oluşan bir örnek almak için random.sample() değerini saklayacak sample adlı bir liste oluşturun; ilk argüman olarak simulation listesini ve ikinci argüman olarak 3 örnek alın: sample = random.sample(simulation, k=3). Yeni örnekleri kaydetmek için, önceden yazılmış write() fonksiyonunu simulation ve sample ile kullanın.
Son olarak, mor halı üzerindeki karanlık X işaretine doğru yürüyüp masaya dönün, random.uniform() sonucunu saklamak için defect adında bir değişken oluşturun, 3 ve 10 argümanlarını ekleyin. Bunlar, orijinal simülasyon ile ondan alınan örnek için örnekleme değerleridir; bunları, aldığımız örnekten potansiyel ekipman arıza marjlarını üretmek amacıyla kullanacağız.
losses adında bir değişken oluşturun ve random.triangular() değerini saklayın, 200, 600 ve 400 sayılarını argüman olarak ekleyin. Bunlar, önceki notta belirtilen, sırasıyla en düşük, en yüksek ve orta değere en yakın olan malzeme sayılarını temsil eder. Bu, simülasyonda kullanılan malzeme sayısına göre üçgen dağılımlı rastgele bir değer elde etmemizi sağlar. Sonuçları elde etmek ve seviyeyi tamamlamak için, önceden yazılmış write() fonksiyonunu defect ve losses değerleriyle kullanın.