91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python生成不重復隨機數和對list亂序的解決方法

發布時間:2020-08-23 03:31:52 來源:腳本之家 閱讀:346 作者:落落圖靈 欄目:開發技術

andom.sample(list, n)即是從list中隨機選取n個不同的元素

# -*- coding: utf-8 -*- 
import random 
# 從一個list中隨機挑選5個 
list = [12, 23, 13, 14, 78, 234, 123, 12345] 
randomlist = random.sample(list, 5) 
print randomlist 
 
# 在range(10)中隨機生成5個不重復的數,可以作為隨機下標集合,然后到list中取數 
len = list.__len__() 
indexList = range(len) 
randomIndex = random.sample(indexList, 5) 
for i in randomIndex: 
 print "下標為%d" % i 
 print list[i] 

對list進行洗牌,亂序排序,random.shuffle(list),注意原來的list會被改變

# -*- coding: utf-8 -*- 
import random 
# 對list洗牌,在原list上做改變 
list = range(10) 
print list 
random.shuffle(list) 
print "隨機排序列表 : ", list 

關于生成隨機的不重復數,我被面試過兩次,有一次的應用場景是抽獎。

我當時提出的解決方案是:將生成的隨機數(數組的隨機下標)放在一個數組中,每次對新生成的隨機數首先判斷是否已經存在,如果不存在就加入這個數組,如果存在就重新生成隨機數,直到這個數組中的元素個數到達一個特定值,然后拿著這個隨機下標數組到原數組中去取元素。面試官問我時間復雜度問我是多少,我說O(n^2),面試官問我有沒有改進方案,我想了一會沒想出來。

回到宿舍后舍友說,你可以每次對選中的元素和最后元素交換以下,下一次生成隨機數的時候就在前n-1個元素中生成,這樣每次只要交換一次元素,就不用去那個數組中判斷當前下標是否已經被生成過一次,時間復雜度變成O(n),不由佩服。

Java中提供了list.contains(ele)函數,可以直接判斷指定容器中是否存在某個元素,這樣就不用寫二重循環了,但是時間復雜度仍然是O(n^2)

不過今天看了一下python中的sample函數(隨機選取種子點)直接就能達到我要的結果,下次再寫抽獎函數一行代碼就搞定了。

以上這篇python生成不重復隨機數和對list亂序的解決方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

上饶市| 哈密市| 宝坻区| 敦煌市| 大丰市| 抚远县| 内乡县| 辛集市| 青神县| 肇源县| 儋州市| 枣强县| 兰考县| 剑河县| 岳普湖县| 石门县| 合阳县| 东台市| 上思县| 观塘区| 扎鲁特旗| 新田县| 昌乐县| 岐山县| 旅游| 新营市| 勐海县| 万山特区| 泰来县| 花莲市| 闽清县| 建昌县| 双流县| 平阴县| 仁布县| 咸阳市| 都昌县| 崇明县| 丹寨县| 磐石市| 龙门县|