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

Եթե գտնվում ես վեբ զտիչի հետևում, խնդրում ենք համոզվել, որ *.kastatic.org և *.kasandbox.org տիրույթները հանված են արգելափակումից։

Հիմնական նյութ

Պատահական թվերի բաշխում

Հնարավոր է, որ քո կյանքում ստեղծվեն իրավիճակներ, երբ քեզ պատահական արժեքների համաչափ կամ Գաուսյան բաշխում պետք չլինի։ Պատկերացրու, որ դու պատահական քայլող ես և սնունդ ես փնտրում։ Մինչև սնունդ գտնելը որոշ տարածության մեջ պատահական ման գալը տրամաբանական մոտեցում է թվում, քանի որ չգիտես, թե, վերջիվերջո, որտեղ սնունդ կա։ Այս մոտեցման խնդիրն այն է, որ պատահական քայլողները շատ հաճախ վերադառնում են իրենց՝ նախկինում այցելած վայրերը։ Դրանից խուսափելու համար հարկավոր է ժամանակ առ ժամանակ շատ մեծ քայլ կատարել։ Սրա արդյունքում քայլողը կարողանում է ինչ-որ հատվածում սնունդը պատահաբար փնտրել, իսկ ժամանակ առ ժամանակ տեղափոխվել հեռու վայր՝ նույն վայրը այցելելու անգամների թիվը փոքրացնելով։ Պատահական քայլի այս վարիացիայի՝ Լևիի թռիչքի համար հավանականությունների հարմարեցված խումբ է հարկավոր։ Հաշվի առնելով, որ ուղղակիորեն Լևիի թռիչք չենք կիրառում, հավանականությունների բաշխումը կարող ենք այսպես սահմանել. ինչքան քայլը մեծ, այնքան հավանականությունը փոքր, ինչքան քայլը փոքր, այդքան հավանականությունը մեծ։
Նախորդ հոդվածներում մենք տեսանք, որ հավանականությունների հարմարեցված բաշխում կարող ենք գեներացնել երկու կերպով՝ random() ֆունկցիայի վերադարձրած արժեքները ստուգելով կամ որևէ զանգված արժեքներով լցնելով, որտեղ մի քանի անգամ ներմուծված արժեքներն ընտրելու հավանականությունն ավելի մեծ է։ Լևիի թռիչքը կիրառելու համար կարող ենք ընդունել, որ մեծ քայլ կատարելու հավանականությունը 1% է։
var r = random(1);
// Մեծ քայլ կատարելու 1% հավանականություն
if (r < 0{,}01) {
  xstep = random(-100, 100);
  ystep = random(-100, 100);
} else {
  xstep = random(-1, 1);
  ystep = random(-1, 1);
}
Այնուամենայնիվ, այս մոտեցման արդյունքում ունենում ենք կոնկրետ քանակով հնարավոր տարբերակներ։ Իսկ ի՞նչ անենք, եթե ավելի ընդհանուր կանոն ենք ուզում կիրառել. այն է՝ ցանկանում ենք, որ ինչքան թիվը մեծ լինի, այդքան ավելի հավանական լինի այն ընտրելը։ Այսինքն՝ չնչին չափով ավելի հավանական լինի 3,145 ընտրել՝ 3,144-ի փոխարեն։ Դրա համար, եթե x-ը պատահական թիվն է, կարող ենք դրա ընտրության հավանականությունը y առանցքի վրա արտապատկերել այսպես՝ y = x։
Կոդի բնույթի նկար
Պատկեր 1,4
Եթե կարողանանք այս գրաֆիկի հիման վրա պատահական թվերի բաշխում գեներացնել, նույն մոտեցմամբ ցանկացած այլ կորի համապատասխան բաշխում կկարողանանք գեներացնել, եթե ունենանք դրա բանաձևը։
Հնարավոր լուծումներից մեկը մեկ պատահական թիվ ընտրելու փոխարեն երկու պատահական թիվ ընտրելն է։ Առաջին թիվը պարզապես կմնա պատահական թիվ, իսկ երկրորդը կհամարենք «պատահական արժեքի որակավորող». դրա միջոցով կորոշենք՝ արդյոք առաջին պատահական թիվը հաշվի առնել, թե նորն ընտրել։ Այս մոտեցման արդյունքում այն թվերը, որոնք ավելի հեշտ կորակավորվեն, ավելի հաճախ կընտրվեն, իսկ որակավորումը դժվարությամբ ստացող թվերն ավելի հազվադեպ կընտրվեն։ Ստորև ներկայացնում ենք քայլերը. սկզբի համար դիտարկենք միայն 0-1 ընկած պատահական արժեքները։
  1. Ընտրիր պատահական թիվ՝ R1
  2. Հաշվարկիր P հավանականություն, որին պետք է համապատասխանի R1-ը։ Կարող ենք հաշվել այսպես՝ P = R1։
  3. Ընտրիր մեկ այլ պատահական թիվ՝ R2
  4. Եթե R2-ը P-ից փոքր է, կհամարենք, որ գտել ենք մեր թիվը՝ R1-ը։
  5. Եթե R2-ը P-ից փոքր չէ, վերադառնում ենք քայլ 1-ին և վերսկսում։
Այս մոտեցման արդյունքում մենք համարում ենք, որ պատահական թվի որակավորում ստանալու հավանականությունը հավասար է հենց այդ պատահական թվին։ Ենթադրենք՝ R1-ը 0,1 է։ Սա նշանակում է, որ R1-ի որակավորում ստանալու հավանականությունը 10% է։ Եթե R1-ը 0,83 լինի, որակավորում ստանալու հավանականությունը 83% կլինի։ Այսինքն՝ թիվն ինչքան մեծ լինի, այդքան հավանական կլինի այն ընտրելը։
Ստորև ներկայացնում ենք ֆունկցիա, որը կիրառում է մեր քննարկած ալգորիթմը և վերադարձնում 0-1 որևէ արժեք: Ուշադրություն դարձրու, որ ալգորիթմը կրում է Մոնտե Կառլոյի մեթոդի անունը, որն էլ կրում է Մոնտե Կառլոյի խաղատան անունը։\ Այս ծրագրում այդ թվերը կիրառվում են այդ չափերի էլիպսներ գծելու համար, բայց այդ արժեքներով շատ այլ բաներ էլ է հնարավոր անել։

«Բնական նմանակիչներ» դասընթացը ստեղծվել է Դանիել Շիֆմանի «Կոդի բնույթը» գրքի հիման վրա և կիրառվում է ըստ Creative Commons Attribution-NonCommercial 3,0 Unported License-ի։

Ուզո՞ւմ ես միանալ խոսակցությանը։

Առայժմ հրապարակումներ չկան։
Անգլերեն հասկանո՞ւմ ես: Սեղմիր այստեղ և ավելի շատ քննարկումներ կգտնես «Քան» ակադեմիայի անգլերեն կայքում: