If you're seeing this message, it means we're having trouble loading external resources on our website.

თუ ვებფილტრს იყენებთ, დარწმუნდით, რომ *.kastatic.org და *.kasandbox.org დომენები არ არის დაბლოკილი.

ძირითადი მასალა

ალბათობა და არათანაბარი განაწილებები

გახსოვთ, პირველად რომ დაიწყეთ აქ პროგრამირება? ალბათ, გინდოდათ, ბევრი წრე დაგეხატათ ეკრანზე. ასე რომ, თქვენს თავს ეუბნებოდით: „ოჰ, ვიცი. დავხატავ ამ წრეებს შემთხვევითად შერჩეულ ადგილმდებარეობებზე, შემთხვევითად შევურჩევ ზომებსა და ფერებს". კომპიუტერული გრაფიკის სისტემაში ხშირად ყველაზე ადვილია, სისტემას საწყის მნიშვნელობად მივანიჭოთ შემთხვევითობა. მიუხედავად ამისა, ამ გაკვეთილებში გვინდა, შევქმნათ სისტემები, რომლებიც ეფუძნება იმას, რასაც ბუნებაში ვხედავთ. საწყის მნიშვნელობად შემთხვევითობის არჩევა არც ისე აზრიანი გამოსავალია დიზაინის ამოცანისთვის — განსაკუთრებით კი ისეთი ამოცანისთვის, რომელიც მოიცავს ორგანული ან ბუნებრივი ვიზუალის სიმულაციას.
რამდენიმე ხრიკის გამოყენებით შეგვიძლია, შევცვალოთ random()-ის გამოყენების გზა და ვაწარმოებინოთ მას შემთხვევითი რიცხვების „არათანაბარი" განაწილება. ეს გამოგვადგება ამ კურსის განმავლობაში, როცა სხვადასხვა სიტუაციას განვიხილავთ. მაგალითად, როდესაც გამოვიკვლევთ გენეტიკურ ალგორითმებს, დაგვჭირდება მეთოდოლოგია „შერჩევისთვის" - ჩვენი პოპულაციის რომელი წევრები უნდა შეირჩნენ თავიანთი დნმ-ის გადასაცემად შემდეგი თაობისთვის? გახსოვთ ყველაზე მეტად შეგუებულების გადარჩენის კონცეფცია? ვთქვათ, გვაქვს პოპულაცია მაიმუნებისა, რომლებიც გადიან ევოლუციის პროცესს. ყველა მაიმუნს არ ექნება გამრავლების (შთამომავლობის დატოვების) თანაბარი ალბათობა. დარვინის ევოლუციის სიმულაციისთვის თანაბრად შემთხვევითად ვერ ავარჩევთ ორ მაიმუნს მშობლად. გვინდა, რომ უფრო მეტად „შეგუებულები“ მეტი ალბათობით ავირჩიოთ. უნდა განვსაზღვროთ „ყველაზე მეტად შეგუებულობის ალბათობა“. მაგალითად, განსაკუთრებით სწრაფ და ძლიერ მაიმუნს შეიძლება, ჰქონდეს შთამომავლობის გაჩენის 90% ალბათობა, ხოლო სუსტისთვის ამის ალბათობა მხოლოდ 10% იყოს.
აქ დროებით შევჩერდეთ და გადავხედოთ ალბათობის საფუძვლებს. ჯერ გავაანალიზებთ ერთი ხდომილობის ალბათობას, ანუ, რამდენად სავარაუდოა, რომ მოცემული ხდომილობა მოხდება.
თუ გაქვთ სისტემა გარკვეული რაოდენობის შესაძლო შემთხვევით (შედეგით) და თითოეულ შემთხვევას აქვს მოხდენის თანაბარი შანსი, კონკრეტული ხდომილობის მოსვლის ალბათობა ტოლია ამ ხდომილობაში შემავალი შემთხვევების რაოდენობის განაყოფის ყველა შესაძლო შემთხვევის რაოდენობაზე. მონეტის აგდება არის მარტივი მაგალითი - მას მხოლოდ ორი შესაძლო შემთხვევა აქვს, საფასური ან ბორჯღალი. საფასურის მიღების მხოლოდ ერთი გზა არსებობს. შესაბამისად, იმის ალბათობა, რომ მონეტის აგდების შემდეგ მოვა საფასური, არის ერთი გაყოფილი ორზე: 1/2, იგივე 50%.
აიღეთ 52-კარტიანი დასტა. ამ დასტიდან ტუზის ამოღების ალბათობა არის:
ტუზების რაოდენობა / კარტის რაოდენობა = 4/52 = 0,077 = ~ 8%
აგურის მოსვლის ალბათობა არის:
აგურების რაოდენობა / კარტების რაოდენობა = 13 / 52 = 0,25 = 25%
აგრეთვე შეგვიძლია, გამოვთვალოთ რამდენიმე ხდომილობის მოსვლის ალბათობა მიმდევრობაში. ამის გასაკეთებლად, უბრალოდ, ვამრავლებთ თითოეული ხდომილობის მოსვლის ალბათობებს.
მონეტის აგდებისას სამჯერ ზედიზედ საფასურის მოსვლის ალბათობა არის:
(1/2) * (1/2) * (1/2) = 1/8 (ანუ 0,125)
ეს ნიშნავს, რომ საფასურის სამჯერ ზედიზედ მოსვლის შანსი არის რვიდან ერთი (თითოეულ ჯერზე მონეტას ვაგდებთ სამჯერ).
გსურთ ალბათობის მიმოხილვა სანამ გააგრძელებთ? ისწავლეთ მოვლენათა თანაკვეთა და დამოკიდებული ალბათობა.
არსებობს random() ფუნქციის ალბათობით გამოყენების რამდენიმე გზა. ერთ-ერთი ტექნიკა არის მასივის შევსება შერჩეული რიცხვებით, რომელთაგან რამდენიმე მეორდება, შემდეგ ამ მასივიდან შემთხვევითი რიცხვების არჩევა და ამ არჩეულების მიხედვით ხდომილობების დაგენერირება.
ამ კოდის გაშვება შექმნის მნიშვნელობა 1-ის დაბეჭდვის 40%-იან ალბათობას, 2-ის დაბეჭდვის 20%-იან ალბათობას და 3-ის დაბეჭდვის 40%-იან ალბათობას.
აგრეთვე შეგვიძლია, ვითხოვოთ შემთხვევითი რიცხვი (სიმარტივისთვის განვიხილოთ შემთხვევითი ათწილადი მნიშვნელობები 0-სა და 1-ს შორის) და ხდომილობას დავრთოთ მოხდენის ნება მხოლოდ იმ შემთხვევაში, თუ ჩვენი შემთხვევითი რიცხვი არის კონკრეტულ დიაპაზონში. იხილეთ მაგალითი ქვემოთ და გააგრძელეთ „გადატვირთვაზე" დაჭერა მანამ, სანამ შემთხვევითად არჩეული რიცხვი არ იქნება მოცემულ ზღვარზე ნაკლები:
ამ მეთოდის გამოყენება აგრეთვე შეიძლება რამდენიმე შემთხვევაზე (შედეგზე). ვთქვათ, შემთხვევა A-ს აქვს მოხდენის 60%-იანი ალბათობა, შემთხვევა B-ს აქვს 10%-იანი, ხოლო შემთხვევა C-ს — 30%-იანი. ამის კოდში იმპლემენტაციას ვახორციელებთ შემთხვევითი რიცხვის არჩევითა და იმის ნახვით, რა დიაპაზონში ვარდება ის.
  • 0,00-სა და 0,60-ს შორის (60%) –> შედეგი A
  • 0,60-სა და 0,70-ს შორის (10%) –> შედეგი B
  • 0,70-სა და 1,00-ს შორის (30%) –> შედეგი C
დააჭირეთ გადატვირთვის ღილაკს, რათა ნახოთ, რამდენად ხშირად იღებთ სხვადასხვა შედეგს:
შეგვეძლო, ზემოთ მოცემული მეთოდოლოგია გამოგვეყენებინა ისეთი შემთხვევითი მოხეტიალის შესაქმნელად, რომელიც მიდრეკილია მარჯვნივ წასვლისკენ. აი, შემდეგი ალბათობების მქონე Walker-ის მაგალითი:
  • ზემოთ გადაადგილების ალბათობა: 20%
  • ქვემოთ გადაადგილების ალბათობა: 20%
  • მარცხნივ გადაადგილების ალბათობა: 20%
  • მარჯვნივ გადაადგილების ალბათობა: 40%

ეს „ბუნებრივი სიმულაციების" კურსი ეფუძნება დანიელ შიფმენის წიგნს "კოდის ბუნებას", ის გამოყენებულია ლიცენზიით Creative Commons Attribution-NonCommercial 3,0 Unported License.

გსურთ, შეუერთდეთ დისკუსიას?

პოსტები ჯერ არ არის.
გესმით ინგლისური? დააწკაპუნეთ აქ და გაეცანით განხილვას ხანის აკადემიის ინგლისურენოვან გვერდზე.