• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Python五種“隨機抽獎”方法

      2021-07-07 06:32:07牟曉東
      電腦報 2021年16期
      關鍵詞:抽獎列表整數(shù)

      牟曉東

      “隨機抽獎”例題:假設要從10000個人中隨機抽取出10人作為“中獎者”,每人對應一個0-9999中的整數(shù),要求使用Python編程按從小到大的順序輸出中獎者數(shù)字代號。類似的“隨機抽獎”程序一般均需要先導入random(隨機)模塊,然后借助其中的randint()、shuffle()和sample()等函數(shù)進行隨機數(shù)的選取,最后使用列表或集合對數(shù)據(jù)進行存儲、排序和輸出。

      法1:randint()生成隨機整數(shù)后進行in成員運算判斷

      首先,通過“import random”導入random模塊(下同);接著,建立空列表“my_list1 = []”;建立while循環(huán)結構,判斷條件為“l(fā)en(my_list1) <= 10”,即列表my_list1中元素的個數(shù)達到10為止(通過len()檢測列表的長度);在循環(huán)體中,第一條語句為“x = random.randint(0,9999)”,變量x取值為0-9999中的隨機某個整數(shù)(包括0和9999);條件判斷語句“if x not in my_list1”的作用是,查看生成的隨機數(shù)x是否在列表my_list1中,防止多次生成的隨機數(shù)中有重復值出現(xiàn);如果不重復,則使用append()方法將x追加到列表my_list1中:“my_list1.append(x)”;當循環(huán)結束時,列表my_list1中就會保存有10個0-9999間的不重復數(shù)據(jù)。最后,通過sorted()函數(shù)對列表my_list1進行默認參數(shù)排序(升序):“my_list2 = sorted(my_list1)”,得到的列表my_list2就是從小到大順序中獎號碼,再使用print()輸出結果即可。

      運行程序,得到了10個“中獎”號碼(如圖1)。

      法2:randint()生成隨機整數(shù)后存入集合“去重”

      與法1類似,只不過是使用集合而非列表來存儲生成的隨機數(shù):“my_set = set()”,建立一個空集合;接著,仍然是在while循環(huán)中,通過randint生成0-9999間的某隨機數(shù),將它追加到集合my_set中。由于集合中的元素是不可能存在重復數(shù)據(jù)的,因此不必像法1中的列表元素進行in成員運算判斷,相當于直接進行了“去重”操作。循環(huán)結束后,仍然是使用sorted()函數(shù)進行排序并保存至列表my_list中,進行print打印輸出(如圖2)。

      法3:shuffle()隨機排序后進行“切片”

      首先建立列表my_list1,其值為“l(fā)ist(range(10000))”,通過list()將0至9999共10000個數(shù)據(jù)保存至列表my_list1中;接著使用random中的shuffle(),將列表my_list1中的數(shù)據(jù)進行隨機排序:“random.shuffle(my_list1)”;然后對列表my_list1進行切片操作,任意截取出10個數(shù)據(jù),比如“my_list1[:10]”是指從索引的第0個切至第9個(當然也可以使用“my_list2 = my_list1[99:109]”,意思是從第99個切至第109個),將它們存入列表my_list2中;仍然是使用sorted()函數(shù)進行排序并保存至第3個列表my_list3中,進行print打印輸出(如圖3)。

      法4:sample()隨機多個“取樣”

      Random中的sample()功能是從序列中隨機多個“取樣”。首先建立列表my_list1,其值為從0-9999中隨機抽取10個不重復的數(shù)據(jù):“my_list1 = random.sample(range(10000),10)”;然后就可以使用sorted()函數(shù)進行排序,將結果保存至列表my_list2中,最后進行print打印輸出(如圖4)。

      法5:numpy中的random.choice()隨機項提取

      numpy中有個random.choice(),可以隨機從指定列表中提取若干個元素。首先,通過“import numpy as np”導入numpy;接著建立列表my_list1,存儲的數(shù)據(jù)是0-9999共10000個數(shù)據(jù):“my_list1 = list(range(10000))”;建立列表my_list2,值為從列表my_list1中隨機提取10個不重復的數(shù)據(jù):“my_list2 = np.random.choice(my_list1,10,replace=False)”,其中的參數(shù)“replace=False”即為控制隨機數(shù)“不重復”。最后,使用sorted()函數(shù)進行排序并保存至第3個列表my_list3中,進行print打印輸出即可(如圖5)。

      小結:抽獎就是獲取不重復的隨機數(shù)的問題,要解決這個問題Python有多種函數(shù)和算法可以選擇,體會其中的區(qū)別后你可以合理運用在其他實際應用中。

      猜你喜歡
      抽獎列表整數(shù)
      巧用列表來推理
      開學大抽獎
      學習運用列表法
      擴列吧
      一類整數(shù)遞推數(shù)列的周期性
      大抽獎
      航空模型(2016年8期)2017-05-03 12:17:21
      抽獎
      聚焦不等式(組)的“整數(shù)解”
      不含3-圈的1-平面圖的列表邊染色與列表全染色
      抽獎
      興趣英語(2013年3期)2013-05-13 09:21:06
      新巴尔虎左旗| 布尔津县| 嘉善县| 堆龙德庆县| 延吉市| 亳州市| 汝州市| 启东市| 山东| 敦煌市| 云林县| 灵武市| 介休市| 磴口县| 德令哈市| 灌阳县| 加查县| 大悟县| 恩平市| 栖霞市| 天长市| 嘉峪关市| 临朐县| 招远市| 资源县| 天柱县| 河西区| 鹿邑县| 陇南市| 璧山县| 吴堡县| 尚志市| 古丈县| 宁明县| 长子县| 怀宁县| 西峡县| 三穗县| 汉中市| 丰宁| 徐汇区|