第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

生成(0-X)范圍內(nèi)的唯一編號,并保留歷史記錄以防止重復(fù)

生成(0-X)范圍內(nèi)的唯一編號,并保留歷史記錄以防止重復(fù)

繁花不似錦 2019-12-06 15:08:29
在遇到挑戰(zhàn)時,我需要一個函數(shù),該函數(shù)返回從到給定范圍內(nèi)的隨機(jī)數(shù)0 - X。不僅如此,我還要求返回的數(shù)字必須唯一;不重復(fù)在先前對該函數(shù)的調(diào)用中已返回的數(shù)字。(可選)完成此操作后(例如,范圍已“用盡”),只需返回該范圍內(nèi)的隨機(jī)數(shù)即可。人們將如何去做呢?
查看完整描述

3 回答

?
拉莫斯之舞

TA貢獻(xiàn)1820條經(jīng)驗 獲得超10個贊

您得到了一些很棒的編程答案。這是一種更具理論色彩的全景圖:-)

您的問題稱為“采樣”或“子集采樣”,您可以通過幾種方法來執(zhí)行此操作。讓N是你所抽樣框的范圍內(nèi)(即N=X+1),并M為您的樣品(你想挑元素的數(shù)量)的大小。

  • 如果N比更大M,您將要使用一種算法,例如Bentley和Floyd在他的專欄“ Programming Pearls:輝煌的示例 ”中建議的算法(此處暫時不帶ACM的鎖定屏幕而提供),我真的推薦這樣做他們明確給出代碼并根據(jù)哈希表等進(jìn)行討論;那里有一些整潔的花樣

  • 如果N與處于同一范圍內(nèi)M,則您可能需要使用Fisher-Yates隨機(jī)播放,但僅需M一步即可停止(而不是N

  • 如果您真的不太了解,那么Devroye關(guān)于隨機(jī)生成的書第647頁上的算法非???。


查看完整回答
反對 回復(fù) 2019-12-06
?
蠱毒傳說

TA貢獻(xiàn)1895條經(jīng)驗 獲得超3個贊

我寫了這個功能。它使用生成的數(shù)字的歷史記錄保留其自己的數(shù)組,防止初始重復(fù),如果范圍內(nèi)的所有數(shù)字均已輸出一次,則繼續(xù)輸出隨機(jī)數(shù):


// Generates a unique number from a range

// keeps track of generated numbers in a history array

// if all numbers in the range have been returned once, keep outputting random numbers within the range

var UniqueRandom = { NumHistory: new Array(), generate: function(maxNum) {

        var current = Math.round(Math.random()*(maxNum-1));

        if (maxNum > 1 && this.NumHistory.length > 0) {

            if (this.NumHistory.length != maxNum) {

                while($.inArray(current, this.NumHistory) != -1) { current = Math.round(Math.random()*(maxNum-1)); }

                this.NumHistory.push(current);

                return current;

            } else {

                //unique numbers done, continue outputting random numbers, or we could reset the history array (NumHistory = [];)

                return current;

            }

        } else {

            //first time only

            this.NumHistory.push(current);

            return current;

        }

    }

};

這是一個工作中的小提琴


我希望這對某人有用!


編輯:正如下面的Pointy所指出的,它在較大范圍內(nèi)可能會變慢(這是一個 小提琴,在0-1000的范圍內(nèi)運(yùn)行,似乎運(yùn)行良好)。然而; 我并不需要很大的范圍,所以如果您希望生成并跟蹤很大的范圍,則此功能可能確實不適合。


查看完整回答
反對 回復(fù) 2019-12-06
  • 3 回答
  • 0 關(guān)注
  • 576 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號