Hirdetés

Keresés

Új hozzászólás Aktív témák

  • sztanozs
    veterán

    Jól sejtem, hogy valami ilyesmi lesz a megoldás? :U


    sztanozs:
    az x db elem és az x 30%-al jöjjön vissza között van valami korreláció, vagy csak véletlenül használtad ugyanazt a 'változót' két külön dologra?
    Véletlen volt. :B

    Példa:
    Van egy zsák, amiben van körte, alma és szilva. Ha belenyúlok a zsákba, akkor véletlenszerűen kapok egy gyümölcsöt. Én azt szeretném, ha belenyúlok, akkor 30% valószínűséggel legyen alma, 50% valószínűséggel körte és 20% valószínűséggel legyen szilva.
    Emiatt gondoltam, hogy felöltöm előre a zsákot és akkor elvileg ezt kapom meg.

    Utólag gondoltam, hogy lehet nem kellene feltölteni. Hanem kérek egy random számot, ez lenne a százalék és ebből adom meg, hogy az alma, szilva vagy körte. Kicsit fordított logika, de a kód sokkal rövidebb lett.

  • sztanozs
    veterán

    Jól sejtem, hogy valami ilyesmi lesz a megoldás? :U


    sztanozs:
    az x db elem és az x 30%-al jöjjön vissza között van valami korreláció, vagy csak véletlenül használtad ugyanazt a 'változót' két külön dologra?
    Véletlen volt. :B

    Példa:
    Van egy zsák, amiben van körte, alma és szilva. Ha belenyúlok a zsákba, akkor véletlenszerűen kapok egy gyümölcsöt. Én azt szeretném, ha belenyúlok, akkor 30% valószínűséggel legyen alma, 50% valószínűséggel körte és 20% valószínűséggel legyen szilva.
    Emiatt gondoltam, hogy felöltöm előre a zsákot és akkor elvileg ezt kapom meg.

    Utólag gondoltam, hogy lehet nem kellene feltölteni. Hanem kérek egy random számot, ez lenne a százalék és ebből adom meg, hogy az alma, szilva vagy körte. Kicsit fordított logika, de a kód sokkal rövidebb lett.

    Csak egy apróság - ha már az erőforrásigény érdekel. Az aláhúzott rész felesleges:
    function getValue() {
    var result = Math.floor(Math.random() * 10) + 1;
    if(result<=3) {
    return 1;
    } else if(result>3 && result<=7) {
    return 2;
    } else {
    return 3;
    }
    }

    document.getElementById('result').value = getValue();

    Amúgy a Math.floor, meg a +1 is felesleges. Ja és nem 7, hanem 8 (30% + 50% = 80%) :D
    function getValue() {
    var result = Math.random();
    if(result<0.3) {
    return 1;
    } else if(result<0.8) {
    return 2;
    } else {
    return 3;
    }
    }

    document.getElementById('result').value = getValue();

  • Jim-Y
    veterán

    Jól sejtem, hogy valami ilyesmi lesz a megoldás? :U


    sztanozs:
    az x db elem és az x 30%-al jöjjön vissza között van valami korreláció, vagy csak véletlenül használtad ugyanazt a 'változót' két külön dologra?
    Véletlen volt. :B

    Példa:
    Van egy zsák, amiben van körte, alma és szilva. Ha belenyúlok a zsákba, akkor véletlenszerűen kapok egy gyümölcsöt. Én azt szeretném, ha belenyúlok, akkor 30% valószínűséggel legyen alma, 50% valószínűséggel körte és 20% valószínűséggel legyen szilva.
    Emiatt gondoltam, hogy felöltöm előre a zsákot és akkor elvileg ezt kapom meg.

    Utólag gondoltam, hogy lehet nem kellene feltölteni. Hanem kérek egy random számot, ez lenne a százalék és ebből adom meg, hogy az alma, szilva vagy körte. Kicsit fordított logika, de a kód sokkal rövidebb lett.

    Két külön dolgot csinálsz először, majd most. Az első példában X (100) darab elemből 30 darab egyest, 40db 2-t maradék 3-ast adsz vissza, tehát 1-esből 30% kettesből 40, stb darabod lesz. Ahogy csináltad az nem tartom túl erőforrásigényesnek mert O(n)-es a műveletigény. A második példában generálsz véletlen számokat 10-ig majd a véletlen szám függvényében adsz vissza valamit. Itt nem tudod garantálni hogy melyik milyen arányban legyen mert pszeudorandom lesz a szám. Nem akarod leírni hogy mit akarsz így megoldani hátha van rá jobb/más megoldás?

Új hozzászólás Aktív témák