Python中的random.choices函數(shù)用法詳解
1. 什么是random.choices函數(shù)?
random.choices
是Python標(biāo)準(zhǔn)庫(kù)中random
模塊提供的一個(gè)函數(shù),用于從給定的序列中隨機(jī)選擇一個(gè)值。這個(gè)函數(shù)可以用于實(shí)現(xiàn)隨機(jī)抽樣、按照概率進(jìn)行選擇等功能。
random.choices(population, weights=None, *, cum_weights=None, k=1)
函數(shù)的參數(shù)解釋如下:
population
:必需參數(shù),指定要進(jìn)行選擇的序列(可以是列表、元組等)。weights
:可選參數(shù),指定每個(gè)元素的權(quán)重(概率)。如果不指定,則默認(rèn)每個(gè)元素的權(quán)重相等。cum_weights
:可選參數(shù),指定累計(jì)權(quán)重。如果指定了cum_weights
,則必需省略weights
參數(shù)。k
:可選參數(shù),指定要選擇的元素個(gè)數(shù)。默認(rèn)為1,即只選擇一個(gè)元素。
2. random.choices函數(shù)的用法示例
示例1:從列表中隨機(jī)選擇一個(gè)元素
import random fruits = ['apple', 'banana', 'orange', 'grape', 'watermelon'] chosen_fruit = random.choices(fruits) print(chosen_fruit)
運(yùn)行結(jié)果
['grape']
示例2:按照概率從列表中隨機(jī)選擇一個(gè)元素
import random fruits = ['apple', 'banana', 'orange', 'grape', 'watermelon'] weights = [0.1, 0.2, 0.3, 0.2, 0.2] chosen_fruit = random.choices(fruits, weights=weights) print(chosen_fruit)
運(yùn)行結(jié)果
['orange']
示例3:選擇多個(gè)元素
import random fruits = ['apple', 'banana', 'orange', 'grape', 'watermelon'] chosen_fruits = random.choices(fruits, k=3) print(chosen_fruits)
運(yùn)行結(jié)果
['banana', 'apple', 'watermelon']
示例4:利用cum_weights參數(shù)選擇元素
import random fruits = ['apple', 'banana', 'orange', 'grape', 'watermelon'] cum_weights = [0.1, 0.4, 0.7, 0.9, 1.0] chosen_fruit = random.choices(fruits, cum_weights=cum_weights) print(chosen_fruit)
運(yùn)行結(jié)果
['grape']
示例5:選擇多個(gè)元素并計(jì)算選擇的次數(shù)
import random fruits = ['apple', 'banana', 'orange', 'grape', 'watermelon'] chosen_fruits = random.choices(fruits, k=1000) fruit_counts = {} for fruit in chosen_fruits: if fruit in fruit_counts: fruit_counts[fruit] += 1 else: fruit_counts[fruit] = 1 print(fruit_counts)
運(yùn)行結(jié)果
{'orange': 334, 'grape': 192, 'apple': 203, 'watermelon': 152, 'banana': 119}
3. 總結(jié)
random.choices
函數(shù)是Python中一個(gè)非常有用的函數(shù),可以用于實(shí)現(xiàn)隨機(jī)抽樣、按照概率進(jìn)行選擇等功能。通過(guò)合理地使用參數(shù),我們可以根據(jù)需求選擇單個(gè)或多個(gè)元素,并可以對(duì)選擇的元素進(jìn)行計(jì)數(shù)等操作。
通過(guò)閱讀本文,你應(yīng)該對(duì)random.choices
函數(shù)有了更深入的理解,并可以靈活地將其應(yīng)用于自己的編程任務(wù)中。
4.特別提醒
random.choices 在 k>1 時(shí),也就是選擇的元素個(gè)數(shù)大于1時(shí),元素是有可能重復(fù)的。要想得到一個(gè)不重復(fù)的隨機(jī)數(shù)列,請(qǐng)自行編寫方法。
附.可用場(chǎng)景
例如:2048這個(gè)游戲,每次隨機(jī)的值都是2或者4,只有這兩個(gè)值。下面是初始化2048棋盤的數(shù)據(jù)的一個(gè)函數(shù),里面可以看到咱們使用的就是random.choice來(lái)獲取數(shù)組中的隨機(jī)兩個(gè)值的。
def init(): """ 初始化操作 :return: """ # 隨機(jī)生成兩個(gè)2或4并防止到棋盤中 for i in range(2): while True: # 棋盤位置 row = random.randint(0, 3) col = random.randint(0, 3) if data[row][col] == 0: # 在數(shù)組重隨機(jī)抽取2或4·棋盤數(shù)字 data[row][col] = random.choice([2, 4]) break
注意內(nèi)容
注:
1、random.choice 函數(shù)不能直接用于選擇字典中的隨機(jī)鍵值對(duì),因?yàn)樵摵瘮?shù)是用于從序列中選擇隨機(jī)元素的。如果要從字典中選擇隨機(jī)鍵值對(duì),可以使用 random.choice(list(dictionary.items())) 的方法來(lái)實(shí)現(xiàn)。
2、random.choice 函數(shù)不能用于選擇一個(gè)隨機(jī)的布爾值。該函數(shù)的作用是從給定的序列中隨機(jī)選擇一個(gè)元素。在布爾值的情況下,你可以使用 random.choice([True, False]) 來(lái)隨機(jī)選擇一個(gè)布爾值。
總結(jié)
到此這篇關(guān)于Python中random.choices函數(shù)用法的文章就介紹到這了,更多相關(guān)Python中random.choices函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 邊緣擴(kuò)充方式的實(shí)現(xiàn)示例
本文主要介紹了python 邊緣擴(kuò)充方式的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03Python多線程threading join和守護(hù)線程setDeamon原理詳解
這篇文章主要介紹了Python多線程threading join和守護(hù)線程setDeamon原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03Python導(dǎo)入模塊時(shí)遇到的錯(cuò)誤分析
這篇文章主要給大家詳細(xì)解釋了在Python處理導(dǎo)入模塊的時(shí)候出現(xiàn)錯(cuò)誤以及具體的情況分析,非常的詳盡,有需要的小伙伴可以參考下2017-08-08Python3中數(shù)據(jù)校驗(yàn)機(jī)制詳解
在日常編碼環(huán)節(jié),很大比例的錯(cuò)誤處理工作和參數(shù)的輸入有關(guān),所以這篇文章主要來(lái)和大家介紹一下Python3中的數(shù)據(jù)校驗(yàn)機(jī)制,感興趣的可以了解下2024-04-04Python中卷積神經(jīng)網(wǎng)絡(luò)(CNN)入門教程分分享
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)是一類特別適用于處理圖像數(shù)據(jù)的深度學(xué)習(xí)模型,本文介紹了如何使用Keras創(chuàng)建一個(gè)簡(jiǎn)單的CNN模型,并用它對(duì)手寫數(shù)字進(jìn)行分類,需要的可以參考一下2023-05-05Python實(shí)現(xiàn)識(shí)別圖片為文字的示例代碼
這篇文章主要為大家詳細(xì)介紹了Python如何不調(diào)用三方收費(fèi)接口,照樣實(shí)現(xiàn)識(shí)別圖片為文字的功能。文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-08-08Django執(zhí)行源生mysql語(yǔ)句實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了Django執(zhí)行源生mysql語(yǔ)句實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11