• 
    

    
    

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

      ?

      Python多法生成“相異”隨機(jī)數(shù)

      2021-06-25 22:18牟曉東
      電腦報 2021年1期
      關(guān)鍵詞:整數(shù)列表代碼

      牟曉東

      眾所周知,Python語言非常靈活,有著功能極為強(qiáng)大的標(biāo)準(zhǔn)庫和第三方的不斷支持,在進(jìn)行各種數(shù)據(jù)的處理時非常方便。有時在編程解決同一個問題時會有多種編寫方法,代碼的簡潔性和程序的運行效率各不相同。如果要求編程生成50個1000以內(nèi)(包括0和1000)各不相同的隨機(jī)整數(shù),如何來求解呢?在此與大家共享三種方法:

      1.列表元素的append()追加方法

      該方法是最為常規(guī)的編程方法,尤其是在學(xué)習(xí)過其他編程語言(比如C)之后,可以這樣來操作:

      首先是通過“import random”來導(dǎo)入random庫模塊,因為程序中要使用random.randint()來生成隨機(jī)數(shù);接著建立一個名為aList的空列表,進(jìn)入條件為真的循環(huán)結(jié)構(gòu)(while True:)中,邏輯判斷條件為“if len(aList) == 50:”,意思是使用len()函數(shù)求出列表aList內(nèi)元素的個數(shù)是否為50個,是的話則使用break語句跳出整個循環(huán)結(jié)構(gòu);否則的話,執(zhí)行“num = random.randint(0,1000)”語句,也就是將0至1000以內(nèi)(包括0和1000)的某個隨機(jī)整數(shù)賦值給變量num;然后又通過一個if條件判斷語句“if num not in aList:”,檢索一下該num值是否“不存在于列表aList中”,不存在的話則執(zhí)行“aList.append(num)”語句,作用是將該num值通過列表元素的append()方法“追加”于列表aList中;如果該num值已經(jīng)生成在列表aList中,則繼續(xù)下一次循環(huán);while循環(huán)結(jié)束后,此時列表aList中已經(jīng)保存了50個1000以內(nèi)的隨機(jī)整數(shù),最后使用print語句將它們逐個打印輸出,一共是9行Python代碼(如圖1)。

      2.集合元素的add()追加方法

      Python的序列元素種類比較豐富,像列表、元組、字典、字符串、集合等等,各有各的特點和適用場合。比如Python集合的特點之一就是其中各元素的相異性,就是一個集合中不允許存在完全相同的“兩個”元素,各元素都是唯一的。根據(jù)集合的這一特點,我們就可以通過以下代碼來編程求解“相異”隨機(jī)數(shù):

      首先通過“from random import randint”語句導(dǎo)入random庫模塊中的randint;接著通過“bSet = set()”語句建立空集合bSet,同樣也是進(jìn)入一個while循環(huán),其邏輯判斷條件是“while len(bSet)<50:”,意思是檢查集合bSet中元素的個數(shù)是否小于50;條件成立的話,則執(zhí)行“bSet.add(randint(0,1000))”語句,也就是通過集合的add()元素添加方法將生成的一個1000以內(nèi)的隨機(jī)整數(shù)添加到集合bSet中;注意該語句在執(zhí)行操作時,如果恰好某次循環(huán)時生成的某個隨機(jī)整數(shù)已經(jīng)在之前的循環(huán)中生成并保存于集合bSet內(nèi),那么本次操作就不會將這個相同的元素添加到集合bSet中;最后仍然是使用print語句來打印輸出集合bSet內(nèi)保存的50個相異的隨機(jī)整數(shù),一共是5行Python代碼(如圖2)。

      3.random.sample()函數(shù)方法

      第三種方法更為簡潔,充分利用了random庫模塊中的一個名為random.sample()的函數(shù),其作用是截取列表指定長度的隨機(jī)整數(shù),返回的是一個指定長度的新列表,其中的元素是隨機(jī)唯一的。編程如下:

      首先仍然是import random語句;接著建立列表cList,為其賦值為“random.sample(range(0,1000),50)”,意思取50個0至1000以內(nèi)的隨機(jī)整數(shù),作為一個“片斷”返回;最后通過print語句打印輸出cList的元素,僅僅是3行Python代碼(如圖3)。

      如果你使用Spyder,那么觀察右上方的“變量管理器”也不難發(fā)現(xiàn),通過這三種方法分別會生成列表aList、集合bSet和列表cList,各自保存的元素均是50個1000以內(nèi)的隨機(jī)整數(shù)。num是第一種方法中為列表aList生成各隨機(jī)整數(shù)的“中間變量”,其類型是整型int。

      猜你喜歡
      整數(shù)列表代碼
      擴(kuò)列吧
      這是流行病
      列表法解分式方程問題探索
      神秘的代碼
      一周機(jī)構(gòu)凈增(減)倉股前20名
      重要股東二級市場增、減持明細(xì)
      近期連續(xù)上漲7天以上的股
      列表畫樹狀圖各有所長
      2011年《小說月刊》轉(zhuǎn)載列表
      答案
      西和县| 宜宾县| 玉山县| 衡东县| 金寨县| 河北省| 城固县| 林西县| 郯城县| 全椒县| 新河县| 黔西| 新晃| 营山县| 许昌县| 黄冈市| 安国市| 庆阳市| 柞水县| 兰西县| 莱阳市| 广宗县| 柳河县| 宣化县| 哈尔滨市| 甘孜县| 宁陕县| 南皮县| 珠海市| 沂南县| 华池县| 台山市| 山东省| 响水县| 剑河县| 阜平县| 南皮县| 镇宁| 清水县| 富裕县| 富民县|