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

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

您如何有效地生成一個介于0和上限N之間的K個非重復整數(shù)的列表

您如何有效地生成一個介于0和上限N之間的K個非重復整數(shù)的列表

這個問題給出了所有必要的數(shù)據(jù):在給定的間隔[0,N-1]內生成K個非重復整數(shù)序列的有效算法是什么?如果K很大并且足夠接近N,那么瑣碎的算法(生成隨機數(shù),然后將它們添加到序列中之前,先查找它們是否已經(jīng)存在)是非常昂貴的。從鏈接列表中有效地選擇一組隨機元素提供的算法似乎比所需的更為復雜,并且需要一些實現(xiàn)。我剛剛找到了另一種算法,只要您知道所有相關參數(shù),就可以很好地完成工作。
查看完整描述

3 回答

?
收到一只叮咚

TA貢獻1821條經(jīng)驗 獲得超5個贊

在Knuth 的《計算機編程藝術,第二卷:第二數(shù)值算法》第三版中,描述了以下選擇采樣算法:


算法S(選擇采樣技術)。從一組N中隨機選擇n條記錄,其中0 <n≤N。


S1。[初始化。]設置t←0,m←0。(在此算法中,m表示到目前為止選擇的記錄數(shù),而t是我們處理過的輸入記錄的總數(shù)。)


S2。[Generate U.]生成一個隨機數(shù)U,均勻分布在零和一之間。


S3。[測試]如果(N – t)U≥n – m,請轉到步驟S5。


S4。[選擇]選擇樣本的下一條記錄,并將m和t加1。否則樣本完成,算法終止。


S5。[跳過]跳過下一個記錄(不包括在樣本中),將t增加1,然后返回到步驟S2。


與描述相比,實現(xiàn)可能更容易遵循。這是一個從列表中選擇n個隨機成員的Common Lisp實現(xiàn):


(defun sample-list (n list &optional (length (length list)) result)

  (cond ((= length 0) result)

        ((< (* length (random 1.0)) n)

         (sample-list (1- n) (cdr list) (1- length)

                      (cons (car list) result)))

        (t (sample-list n (cdr list) (1- length) result))))

這是一個不使用遞歸的實現(xiàn),并且可以用于所有類型的序列:


(defun sample (n sequence)

  (let ((length (length sequence))

        (result (subseq sequence 0 n)))

    (loop

       with m = 0

       for i from 0 and u = (random 1.0)

       do (when (< (* (- length i) u) 

                   (- n m))

            (setf (elt result m) (elt sequence i))

            (incf m))

       until (= m n))

    result))


查看完整回答
反對 回復 2019-10-19
?
動漫人物

TA貢獻1815條經(jīng)驗 獲得超10個贊

實際上,可以在空間中執(zhí)行此操作,而與選擇的元素數(shù)量成正比,而不是與要選擇的集合的大小成正比,而與所選擇的總集合的比例無關。您可以通過生成隨機排列來執(zhí)行此操作,然后從中進行選擇,如下所示:


選擇一個分組密碼,例如TEA或XTEA。使用XOR折疊可將塊大小減小到比從中選擇的集合大2的最小冪。使用隨機種子作為密碼的密鑰。要在置換中生成元素n,請使用密碼對n進行加密。如果輸出號碼不在您的設置中,請對其進行加密。重復直到數(shù)字在集合內。平均而言,每個生成的號碼您必須進行少于兩次的加密。這樣做還有一個好處,就是如果您的種子是加密安全的,那么整個排列也是安全的。


我在這里詳細介紹了這一點。


查看完整回答
反對 回復 2019-10-19
  • 3 回答
  • 0 關注
  • 670 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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