簡體   English   中英

帶有javascript或jquery的隨機數

[英]Random Number with javascript or jquery

我正在嘗試編寫一個腳本來選擇兩個數字之間的隨機數。 但有時會選擇相同的數字。 我不想重復相同的數字,直到數組完成。

這是我的代碼

$(document).ready(function () {
    abc();
    test = array();

    function abc() {
        res = randomXToY(1, 10, 0);

        $('#img' + res).fadeTo(1200, 1);
        //$(this).addClass('activeImg');
        //});
        setTimeout(function () {
            removeClassImg(res)
        }, 3000);
    }

    function removeClassImg(res) {
        $('#img' + res).fadeTo(1200, 0.1);
        //$('#img' + res).removeClass('activeImg');
        abc();
    }

    function randomXToY(minVal, maxVal, floatVal) {
        var randVal = minVal + (Math.random() * (maxVal - minVal));

        return typeof floatVal == 'undefined' ? Math.round(randVal) : randVal.toFixed(floatVal);

    }
});

有人對此有想法嗎?

您必須維護一個已經生成的數字列表,並對照此列表進行檢查。 如果發現欺騙,請重新生成一個新號碼。

如果您不希望隨機數重復出現,則必須以某種方式進行跟蹤。

如果您要處理的范圍相對較小,則可以創建一個具有所有可能結果的數組,然后簡單地從中隨機挑選出來。

function Randomizer(minVal, maxVal, floatVal){
    var possible_results = []; // for larger arrays you can build this using a loop of course
    var randomization_array = [];
    var count = minVal;
    var incrementor = floatVal || 1; // set the distance between possible values (if floatVal equals 0 we round to 1)
    while (count <= maxVal) {
        possible_results.push(count);
        count += incrementor;
    }

    this.run = function(){
        // if randomization_array is empty set posssible results into it
        randomization_array = randomization_array.length ? randomization_array : $.merge(randomization_array, possible_results);
        // pick a random element within the array
        var rand = Math.floor(Math.random()*randomization_array.length);
        // return the relevant element
        return randomization_array.splice(rand,1)[0];   
    }
}

並為了使用它(它為每個可能的范圍創建一個專門的對象):

rand = new Randomizer(1,10,0);
rand.run();

請注意,這種方法不適用於很大的范圍

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM