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

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

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

კომპიუტერული პროგრამირება

შემთხვევითი რიცხვების ნორმალური განაწილება

ვთქვათ, გვინდა ისეთი პროგრამის შექმნა, რომელიც ქმნის მაიმუნების სამყაროს. თქვენს პროგრამას შეუძლია, შეადგინოს ათასი Monkey (მაიმუნის) ობიექტი, თითოეული 200-იდან 300-მდე სიმაღლის (ეს არის სამყარო, რომელშიც მაიმუნების სიმაღლე 200-იდან 300-მდე პიქსელია).
var randomHeight = random(200, 300);
ეს სწორად აღწერს სიმაღლეებს რეალურ სამყაროში? წარმოიდგინეთ გადატვირთული ტროტუარი ნიუ იორკში. აირჩიეთ ნებისმიერი ადამიანი ქუჩიდან და შეიძლება, ჩანდეს, რომ მისი სიმაღლე არის შემთხვევითი. ეს არ არის ისეთივე შემთხვევითი, როგორსაც random() აწარმოებს. ხალხის სიმაღლეები არ არის თანაბრად განაწილებული; გაცილებით მეტი საშუალო სიმაღლის ადამიანი არსებობს, ვიდრე ძალიან მაღალი ან ძალიან დაბალი. ბუნების სიმულაციისთვის შეიძლება, გვინდოდეს, რომ ჩვენი მაიმუნები უფრო მეტი ალბათობით იყვნენ საშუალო სიმაღლის (250 პიქსელი), მაგრამ ზოგჯერ მაინც ვხვდებოდეთ ძალიან მაღალ ან ძალიან დაბალ მაიმუნებს.
მნიშვნელობათა განაწილება, რომელიც გროვდება საშუალოს ირგვლივ (ინგლისურად მას უწოდებენ „mean-ს"), ცნობილია, როგორც ნორმალური განაწილება. მას აგრეთვე ეწოდება გაუსის განაწილება (მათემატიკოს კარლ ფრიდრიხ გაუსის პატივსაცემად). ფრანგები მას ლაპლასის განაწილებას უწოდებენ (პიერ-სიმონ ლაპლასის პატივსაცემად). ორივე მათემატიკოსი მუშაობდა ამგვარი განაწილების განსაზღვრაზე ადრეულ მეცხრამეტე საუკუნეში.
როდესაც ამ განაწილების გრაფიკს ვადგენთ, ვიღებთ შემდეგნაირ მრუდს, რომელიც არაფორმალურად ცნობილია, როგორც ზარის ფორმის მრუდი (ინგლ. bell curve):
სტანდარტული ზარის ფორმის მრუდის გრაფიკი
სტანდარტული ზარის ფორმის მრუდი
მრუდი დაგენერირებულია მათემატიკური ფუნქციის მიერ, რომელიც განსაზღვრავს ნებისმიერი მოცემული მნიშვნელობის ალბათობას როგორც საშუალოსა (ხშირად აღნიშნავენ სიმბოლოთი μ, ბერძნული ასო მიუ) და სტანდარტული გადახრის (σ, ბერძნული ასო სიგმა) ფუნქციას.
საშუალოს გააზრება საკმაოდ იოლია. ჩვენი სიმაღლეების 200-იდან 300-მდე მნიშვნელობების შემთხვევაში, ალბათ, ინტუიციურად ხვდებით, რომ საშუალო 250-ია. თუმცა, რა ხდება მაშინ, თუ გეტყვით, რომ სტანდარტული გადახრა არის 3 ან 15? რას ნიშნავს ეს რიცხვებისთვის? გრაფიკებზე შეხედვამ შეიძლება, მინიშნება მოგვცეს. ზემოთ მოცემული გრაფიკი გვაჩვენებს ძალიან მცირე სტანდარტული გადახრის მქონე განაწილებას, სადაც მნიშვნელობათა უმრავლესობა გროვდება საშუალოს ირგვლივ. ქვემოთ მოცემული გრაფიკი გვაჩვენებს უფრო მაღალ სტანდარტულ გადახრას, სადაც მნიშვნელობები საშუალოსგან უფრო მეტი დაშორებითაა გადანაწილებული:
ზარის ფორმის მრუდის გრაფიკი უფრო მაღალი სტანდარტული გადახრით
ზარის ფორმის მრუდი უფრო მაღალი სტანდარტული გადახრით
"სტანდარტული გადახრის" კონცეფცია თქვენთვის ახალია? ნუ ინერვიულებთ! სანამ გააგრძელებთ, შეგიძლიათ, ისწავლოთ დისპერსია და სტანდარტული გადახრა ხანის აკადემიაზე.
რიცხვები შემდეგნაირად ჯდება: მოცემული გვაქვს პოპულაცია. ამ პოპულაციის წევრთა 68%-ს ექნება მნიშვნელობა, რომელიც 1 სტანდარტული გადახრით არის დაშორებული საშუალოდან, 95%-ს ექნება მნიშვნელობა 2 სტანდარტული გადახრის ფარგლებში, ხოლო 99,7%-ს — 3 სტანდარტული გადახრისაში. თუ მოცემული გვაქვს, რომ სტანდარტული გადახრა არის 5 პიქსელი, მაიმუნების მხოლოდ 0.03%-ს ექნება 235 პიქსელზე ნაკლები (სამი სტანდარტული გადახრით ნაკლები საშუალო 250-ზე) ან 265 პიქსელზე მეტი (სამი სტანდარტული გადახრით მეტი საშუალოზე) სიმაღლე.

საშუალოსა და სტანდარტული გადახრის გამოთვლა
განვიხილოთ იმ 10 მოსწავლისგან შემდგარი კლასი, რომლებიც ტესტზე იღებენ შემდეგ ქულებს (100-იდან):
85, 82, 88, 86, 85, 93, 98, 40, 73, 83
ქულების აჯამვით და მათ რაოდენობაზე გაყოფით ვითვლით საშუალოს.
საშუალო = (85+82+88+86+85+93+98+40+73+83)/10=81,3
სტანდარტული გადახრა გამოითვლება კვადრატული ფესვის ამოღებით საშუალოს ირგვლივ გადახრების კვადრატების საშუალოდან.
პირველი ნაბიჯი არის თითოეული ქულისათვის გადახრის გამოთვლა (სხვაობა საშუალოდან) და ამ გადახრების კვადრატი:
ქულაგადახრაკვადრატული გადახრა
858581,3=3,7(3,7)2=13,69
828281,3=0,7(0,7)2=0,49
888881,3=6,7(6,7)2=44,89
868881,3=4,7(4,7)2=22,09
858581,3=3,7(3,7)2=13,69
939381,3=11,7(11,7)2=136,89
989881,3=16,7(16,7)2=278,89
404081,3=41,3(41,3)2=1705,69
737381,3=8,3(8,3)2=68,89
838381,3=1,7(1,7)2=2,89
შემდეგ ვითვლით კვადრატული გადახრების საშუალოს, რომელსაც დისპერსიას ვუწოდებთ. ეს არის ბოლო სვეტის ჯამი გაყოფილი მწკრივების რაოდენობაზე:
დისპერსია = 2288,1/10 = 228,81
საბოლოოდ ვითვლით სტანდარტულ გადახრას დისპერსიიდან კვადრატული ფესვის ამოღებით:
სტანდარტული გადახრა = 228,81 = 15,13.
გსურთ სტანდარტული გადახრის უკეთ გაგება? შეგიძლიათ, ისწავლოთ დისპერსია და სტანდარტული გადახრა უფრო სიღრმისეულად აქ, ხანის აკადემიაზე.

საბედნიეროდ, პროგრამაში შემთხვევითი რიცხვების ნორმალური განაწილების გამოსაყენებლად არც ერთი ზემოთ ჩამოთვლილი გამოთვლის შესრულება არ გვიწევს. შეგვიძლია, გამოვიყენოთ Random ობიექტი, რომელსაც ProcessingJS გვთავაზობს.
იმისთვის, რომ გამოვიყენოთ Random, ჯერ უნდა გამოვაცხადოთ ახალი Random ობიექტის ნიმუში, რომელსაც პარამეტრად გადავცემთ 1-ს. ამ ცვლადს ვეძახით „გენერატორს", რადგან ის, რაც შევქმენით, შეიძლება, აღვიქვათ შემთხვევითი რიცხვის გენერატორად.
var generator = new Random(1);
თუ გვსურს, რომ შევქმნათ შემთხვევითი რიცხვი ნორმალური (ან გაუსის) განაწილებით ყოველ ჯერზე, როცა draw() ეშვება, შეგვიძლია, უბრალოდ, გამოვიძახოთ ფუნქცია nextGaussian().
var num = generator.nextGaussian();
println(num);
ახლა რა უნდა ვქნათ ამ მნიშვნელობით? რას ვშვრებით მაშინ, თუ, მაგალითად, გვსურს მისი გამოყენება ეკრანზე დახატული ფიგურის x პოზიციისათვის მნიშვნელობის მისანიჭებლად?
nextGaussian() ფუნქცია აბრუნებს შემთხვევითი რიცხვების ნორმალურ განაწილებას შემდეგი პარამეტრებით: 0-ის ტოლი საშუალოთი და 1-ის ტოლი სტანდარტული გადახრით. ვთქვათ, გვინდა 200-ის ტოლი საშუალო (ცენტრალური ჰორიზონტალური პიქსელი 400 სიგრძის მქონე ფანჯარაში) და 60 პიქსელის ტოლი სტანდარტული გადახრა. ჩვენი პარამეტრების მორგება შეგვიძლია სტანდარტულ გადახრაზე გამრავლებით და საშუალოს დამატებით.
var standardDeviation = 60;
var mean = 200;
var x = standardDeviation * num + mean;
ახლა შეგვიძლია, შევქმნათ ჩვენი პროგრამა, რომელიც ხატავს ნახევრად გამჭვირვალე წრეებს ნორმალური განაწილების მიხედვით. ყველაზე ბნელი წერტილი იქნება ცენტრთან ახლოს, სადაც მნიშვნელობათა უმრავლესობა გროვდება, მაგრამ ზოგჯერ წრეები იხატება ცენტრიდან შორს, მარჯვნივ ან მარცხნივ.

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

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

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