Khaladaadka wareegsan inta lagu jiro kala-guurka

Bavaria, celceliska guud ee \(2{,}33\) wuxuu caddeynayaa ku habboonaanta Gymnasium \(2{,}34\) uusan caddeyn. Marka la gaaro heerkan fiiqan, kala horreynta laba hawlgal oo wareegsan ayaa go'aamin kara dhinaca uu ilmuhu ku dhaco. Günther Felbinger wuxuu ka hadlayaa cawaaqibka ka dhalan kara saameyntan wareegsan ee qoraal blog ah . Si aan u xiiseeyo, waxaan naftayda ku xisaabiyay saameynta dhammaan isku-darka darajada ee loo oggol yahay qaabka.


Su'aashayda dhexe waa: Immisa jeer ayay soo koobidda hore ee darajooyinka maaddooyinka oo dhan horseeddaa nooc ka duwan xisaabinta dugsiga marka loo eego xisaabinta iyadoo la adeegsanayo celceliska maadooyinka aan la soo koobi karin? Intaa waxaa dheer, waxay noqon lahayd mid xiiso leh in la arko waxa isbeddelaya haddii celceliska maadooyinka shaqsiga ah (sida lagu soo jeediyay halkaas) marka hore lagu soo koobo hal meel oo jajab tobanle ah.

Sida ku xusan Qaybta 6aad ee Xeerarka Dugsiga Hoose ee Bavarian, celceliska darajada waxaa laga xisaabiyaa darajooyinka Jarmalka, Xisaabta, iyo Daraasaadka Deegaanka iyo Guud. Xeerarka hirgelinta waxay qeexayaan xadka ilaa iyo \(2{,}33\) iyo ilaa iyo oo ay ku jiraan \(2{,}66\) . Qaabka xisaabinta soo socota, celcelis kasta oo guud waxaa loo gooyaa laba meelood oo jajab tobanle ah mana aha mid mar kale la soo koobay. Sidaa darteed, tusaale ahaan...

\[
\frac{2{,}33+2{,}34+2{,}34}{3}=2{,}3366\ldots \longrightarrow 2{,}33.
\]

Tani waa muhiim u ah kala soocidda: \(2{,}3366\ldots\) ma noqdo \(2{,}34\) , laakiin \(2{,}33\) sidaas darteedna wali waa ku filan tahay dugsiga naxwaha.

Gelitaanka bilowga ah wuxuu muujinayaa wareeg hore oo leh qiimayaasha celceliska ee la qiyaasay ee gaarka ah ee mawduuca \(1{,}6\) , \(2{,}6\) , iyo \(2{,}6\) . Kuwaas, darajooyinka oo dhan \(2\) , \(3\) , iyo \(3\) ayaa marka hore laga soo qaatay. Celceliskoodu waa

\[
\frac{2+3+3}{3}=2{,}6666\ldots \longrightarrow 2{,}66,
\]

taasoo la macno ah in ardaygu uusan u qalmin gelitaanka dugsiga naxwaha tooska ah. Si kastaba ha ahaatee, iyada oo aan loo wareejin darajooyinka oo dhan, natiijada tusaalaha mala-awaalka ah waxay noqon doontaa...

\[
\frac{1{,}6+2{,}6+2{,}6}{3}=2{,}2666\ldots \longrightarrow 2{,}26.
\]

Tusaalaha labaad, wareeggu wuxuu u shaqeeyaa jihada ka soo horjeeda: \(2{,}4\) , \(3{,}4\) iyo \(2{,}4\) waxay noqdaan qiimayaasha qoraalka oo dhan \(2\) , \(3\) iyo \(2\) , si rasmi ah \(2{,}33\) . Si kastaba ha ahaatee, qiimayaasha aan wareegsanayn waxay keenaan \(2{,}73\) . Tusaalooyinka si cad ayay u muujinayaan saameynta. Si kastaba ha ahaatee, weli ma muujinayaan inta jeer ee ay dhacdo ama waxa cawaaqibka ka dhalan kara habka wareegsan ee ka duwan uu noqon doono.

Sidaa darteed, xisaabteyda waxaan u isticmaalaa meel natiijo oo cad. Macnaha mawduuc kasta wuxuu noqon karaa mid ka mid ah qiimayaasha \(501\) ee ku jira.

\[
1{,}00,\, 1{,}01,\, 1{,}02,\, \ldots, \, 5{,}99, \, 6{,}00
\]

Waxaan qiyaasaa. Waxaan si isku mid ah u miisaamaa isku-darka kala duwan ee Jarmalka, xisaabta, iyo daraasadaha maxalliga ah iyo kuwa guud. Sidaa darteed, waxaa jira

\[
501^3=125\,751\,501
\]

Kiisaska. Sidaa darteed, qaabku waa mid aan mugdi ku jirin, laakiin macmal ah: Waxay u qaadanaysaa celcelis ahaan si siman loo qaybiyay maadooyinka, madaxbannaanida saddexda maaddo, iyo tallaabooyinka boqol meelood meel. Kuma tarjumeyso qaybinta dhabta ah ee carruurta dugsiga hoose ee Bavaria.

Saddex maaddo waxay la macno tahay \(d,m,h\) waxaan qornaa

\[
A(d,m,h)=\frac{\left\lfloor 100\cdot\frac{d+m+h}{3}\right\rfloor}{100}
\]

Celceliska guud ee loo jaray laba meelood oo jajab tobanle ah. Hadda waxaan isbarbar dhigaynaa saddex hab oo xisaabin ah.:

\[
\bilow{la jaanqaaday}
A_0 &= A(\operatorname{round}(d),\operatorname{round}(m),\operatorname{round}(h)),\\
A_1 &= A(\magaca hawlgaliyaha{wareeg}_1(d),\magaca hawlgaliyaha{wareeg}_1(m),\magaca hawlgaliyaha{wareeg}_1(h)),\\
A_\mathrm{ref} &= A(d,m,h).
\end{aligned}
\]

\(A_0\) waxay u dhigantaa xisaabinta iyadoo la adeegsanayo darajooyin dhammaystiran, \(A_1\) soo jeedinta leh hal boos jajab tobanle ah, iyo \(A_\mathrm{ref}\) tixraaca aan wareegsanayn ee ku jira qaabka. Xisaabinta waxaa si toos ah loogu hirgelin karaa Rust , tusaale ahaan.:

const SCHOOL_GYMNASIUM: i32 = 0;
const SCHOOL_REALSCHULE: i32 = 1;
const SCHOOL_MITTELSCHULE: i32 = 2;
const FLOAT_TOLERANCE: f64 = 1e-9;

#[derive(Clone, Copy, Default)]
struct Statistic {
    conflict_count: u64,
    total_count: u64,
}

fn determine_school(average: f64) -> i32 {
    if average <= 2.33 {
        return SCHOOL_GYMNASIUM;
    }
    if average <= 2.66 {
        return SCHOOL_REALSCHULE;
    }
    SCHOOL_MITTELSCHULE
}

fn calculate_average(note_deutsch: f64, note_mathe: f64, note_hsu: f64) -> f64 {
    let average = (note_deutsch + note_mathe + note_hsu) / 3.0;
    ((average + FLOAT_TOLERANCE) * 100.0).floor() / 100.0
}

fn round_to_whole_grade(grade: f64) -> f64 {
    grade.round()
}

fn round_to_one_decimal(grade: f64) -> f64 {
    (grade * 10.0).round() / 10.0
}

fn normalize_grade(grade: f64) -> f64 {
    (grade * 100.0).round() / 100.0
}

fn percentage(count: u64, total: u64) -> f64 {
    count as f64 / total as f64 * 100.0
}

fn main() {
    let mut combination_count = 0;
    let mut official_reference_conflicts = 0;
    let mut official_proposal_conflicts = 0;
    let mut proposal_reference_conflicts = 0;
    let mut statistics = [Statistic::default(); 4];

    let mut note_deutsch = 1.0;
    while note_deutsch <= 6.0 {
        let mut note_mathe = 1.0;
        while note_mathe <= 6.0 {
            let mut note_hsu = 1.0;
            while note_hsu <= 6.0 {
                combination_count += 1;

                let official_average = calculate_average(
                    round_to_whole_grade(note_deutsch),
                    round_to_whole_grade(note_mathe),
                    round_to_whole_grade(note_hsu),
                );
                let proposed_average = calculate_average(
                    round_to_one_decimal(note_deutsch),
                    round_to_one_decimal(note_mathe),
                    round_to_one_decimal(note_hsu),
                );
                let reference_average =
                    calculate_average(note_deutsch, note_mathe, note_hsu);
                let official_school = determine_school(official_average);
                let proposed_school = determine_school(proposed_average);
                let reference_school = determine_school(reference_average);

                if official_average == 3.0 {
                    statistics[0].total_count += 1;
                    if reference_school != SCHOOL_MITTELSCHULE {
                        statistics[0].conflict_count += 1;
                    }
                }
                if official_average == 2.66 {
                    statistics[1].total_count += 1;
                    if reference_school == SCHOOL_GYMNASIUM {
                        statistics[1].conflict_count += 1;
                    }
                }
                if official_average == 2.33 {
                    statistics[2].total_count += 1;
                    if reference_school != SCHOOL_GYMNASIUM {
                        statistics[2].conflict_count += 1;
                    }
                }
                if official_average == 2.66 {
                    statistics[3].total_count += 1;
                    if reference_school == SCHOOL_MITTELSCHULE {
                        statistics[3].conflict_count += 1;
                    }
                }

                if official_school != reference_school {
                    official_reference_conflicts += 1;
                }
                if official_school != proposed_school {
                    official_proposal_conflicts += 1;
                }
                if proposed_school != reference_school {
                    proposal_reference_conflicts += 1;
                }

                note_hsu = normalize_grade(note_hsu + 0.01);
            }
            note_mathe = normalize_grade(note_mathe + 0.01);
        }
        note_deutsch = normalize_grade(note_deutsch + 0.01);
    }

    println!(
        "official/reference: {}%",
        percentage(official_reference_conflicts, combination_count)
    );
    println!(
        "official/proposal: {}%",
        percentage(official_proposal_conflicts, combination_count)
    );
    println!(
        "proposal/reference: {}%",
        percentage(proposal_reference_conflicts, combination_count)
    );
    for (index, statistic) in statistics.iter().enumerate() {
        println!(
            "#{}: {}% ({}/{})",
            index + 1,
            percentage(statistic.conflict_count, statistic.total_count),
            statistic.conflict_count,
            statistic.total_count
        );
    }
}

Dulqaadka yar ee ku jira calculate_average waxay ka hortagtaa qiimo sida \(2{,}67\) sababtoo ah matalaaddeeda laba-geesoodka ah, si khaldan ayaa loo tixgeliyey \(2{,}669999\ldots\) waa la jaray. normalize_grade Intaa waxaa dheer, waxay dib ugu celinaysaa qiimaha wareeg kasta shabagga boqol-ka-tallaabo. Ugu yaraan laba qiime celcelis oo kala duwan ayaa jira. \(1/300\) kala fog; dulqaadka \(10^{-9}\) sidaas darteed waa yar oo ku filan in aan la beddelin kiis kasta oo xuduud dhab ah.

Barnaamijka waxaa la soo ururiyay oo lagu bilaabay

rustc -O calc.rs && ./calc

Barnaamijku wuxuu ku celceliyaa dhammaan isku-darka iyo soo celinta \(125\,751\,501\):

IsbarbardhiggaQayb
Darajooyinka oo dhan iyo celceliska maadooyinka aan wareegsanayn\(10{,}4411\,\%\)
Darajooyinka oo dhan marka la barbar dhigo soo jeedinta oo leh hal boos jajab tobanle ah\(10{,}1521\,\%\)
Soo jeedin hal boos oo jajab tobanle ah marka la barbar dhigo celceliska khubarada aan wareegsanayn\(0{,}6615\,\%\)

Qiimaha dhexe ee aniga ii ah waa \(10{,}4411\,\%\): In ka badan hal tobankii isku-darka, wareegga hore ee fasallada oo dhan wuxuu horseedaa nooc dugsi oo ka duwan kan tixraaca aan wareegsanayn. Saamigani wuxuu si gaar ah u qeexayaa saameynta wareegga ee ku jirta qaabka la doortay.

U beddelashada celceliska khabiirka oo leh hal meel oo jajab tobanle ah waxay horseedi doontaa kala-soocid ka duwan \(10{,}1521\,\%\) dhammaan kiisaska moodeelka marka la barbar dhigo habkii hore. Si kastaba ha ahaatee, isbarbardhigga saddexaad waa muhiim: marka la barbar dhigo tixraaca aan wareegsanayn, habka leh hal meel oo jajab tobanle ah ayaa ka tagaya oo keliya \(0{,}6615\,\%\) kiisaska leexashada. Sidaas darteed, leexashada tixraaca ayaa hoos u dhacda iyadoo la adeegsanayo

\[
1-\frac{0{,}6615}{10{,}4411}\approx 93{,}7\,\%.
\]

Tani, aniga ahaan, waa natiijada shakiga leh ee ka dhalatay habka xisaabinta ee hadda jira: guulaha la filayo ee ku saabsan mowduuca gaarka ah weli isma beddelin; kaliya waqtiga ay dhacdo isku-soo-ururinta ayaa beddeli karta nooca dugsiga ee la xisaabiyay. In kasta oo xisaabinta hal meel oo jajab tobanle ah aysan si buuxda u tirtirin saameyntan, waxay si weyn hoos ugu dhigaysaa gudaha qaabka.

Si kastaba ha ahaatee, tirooyinkani nooma sheegayaan inta carruur ah ee dhab ahaantii saameysay. Darajooyinka kaarka warbixinta daruuri maaha in la sameeyo celcelis ahaan qaab farsamo ahaan loo soo koobay, waxqabadka tacliimeedna si isku mid ah looma qaybin mana aha mid madax-bannaan, doorashada dhabta ah ee nooca dugsigana kuma xirna oo keliya saddexdan tiro. Xisaabintaydu waxay ka jawaabaysaa su'aal gaar ah: Immisa jeer ayay wareegsani beddeshaa darajada la xisaabiyay marka dhammaan isku-darka qiimaha boqolaad ay si isku mid ah u badan yihiin?

Ugu dambeyntii, isbarbardhigga qoraalka asalka ah: Heerka guud ee halkaas lagu sheegay, qiyaastii \(10\,\%\) wuxuu ku dhow yahay \(10{,}4411\,\%\) -kayga. Si kastaba ha ahaatee, xisaabteydu ma xaqiijinayso afarta kiis ee shaqsiga ah, mid walbana wuxuu sheegay inuu yahay \(1/6 \approx 17\,\%\) "dugsiga sare ee seegay oo leh \(3{,}00\) ", "dugsiga naxwaha ee seegay oo leh \(2{,}33\) ", "dugsiga naxwaha ee gaaray \(2{,}66\) ", iyo "dugsiga sare ee gaaray \(2{,}66\) \(1{,}4615\,\%\) \(59{,}6096\,\%\) \(1{,}2023\,\%\) \(62{,}9395\,\%\) .

Afarta qiimayaal waa fursado shuruudaysan oo leh kooxo tixraac oo cabbirkoodu kala duwan yahay. Iyada oo aan lahayn meel muunad oo si kale loo qeexay \(1/6\) lagama soo saari karo. Xisaabintaydu waxay sidaas darteed xaqiijinaysaa saameynta soo koobidda, laakiin ma aha fursadahan shaqsiyeed. Si kastaba ha ahaatee, hadallada ku saabsan tirada dhabta ah ee carruurta ay dhibaatadu saameysey waxay u baahan doonaan qaybinta dhibcaha dhabta ah iyo ku tiirsanaantooda.

Dib u laabo