国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2020-02-22 23:38:11
字體:
來源:轉載
供稿:網友

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亂序的解決方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 揭阳市| 中山市| 仁寿县| 舞阳县| 阿勒泰市| 古浪县| 白河县| 平武县| 额尔古纳市| 孟州市| 三亚市| 公安县| 乾安县| 来安县| 通辽市| 汤阴县| 棋牌| 军事| 汝南县| 阿拉善左旗| 蕲春县| 科技| 宣化县| 伊金霍洛旗| 吉隆县| 石嘴山市| 即墨市| 瑞昌市| 蒙自县| 黑水县| 阆中市| 武夷山市| 南康市| 额尔古纳市| 郑州市| 深州市| 德清县| 仙桃市| 进贤县| 北安市| 海城市|