隨機函數趣題(谷歌面試題)

有一個能生成1-5的隨機函數,在它的基礎上,寫一個能生成1-7的隨機函數

var f5 = function() {
    return Math.ceil(Math.random() * 5);
};

var test = function(fn) {
    var count = 10000;
    var dict = {};
    for (; count--;) {
        var num = fn();
        dict[num] = dict[num] ? dict[num] + 1 : 1;
    }

    console.log(dict);
};


var f7 = function() {
    var arr = [];
    var arr2 = [];
    var count = 7;
    for (var i = 0; i < count; i++) {
        arr.push(i+1);
    }
    while (arr.length != 1) {
        var dict = {};
        var max = -1;
        for (var i = 0; i < arr.length; i++) {
            var rnd = f5();
            if (rnd> max) {
                max = rnd;
            }
            dict[rnd] = dict[rnd] || [];
            dict[rnd].push(arr[i]);
        }
        arr = dict[max];
    }


    return arr[0];
};


test(f7);

思想是,讓1-7的7個數字“打架”,得分高的進入下一輪,直到決出勝者

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章