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的Dataframe取兩列時(shí)間值相差一年的所有行方法
今天小編就為大家分享一篇使用Python的Dataframe取兩列時(shí)間值相差一年的所有行方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
python如何獲取網(wǎng)絡(luò)數(shù)據(jù)
這篇文章主要介紹了python如何獲取網(wǎng)絡(luò)數(shù)據(jù),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-04-04
Python實(shí)現(xiàn)移動(dòng)指定圖片到指定目錄
這篇文章主要為大家詳細(xì)介紹了如何使用Python的os和shutil庫(kù)實(shí)現(xiàn)自動(dòng)化查找和移動(dòng)圖片功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2025-02-02
Jmeter并發(fā)執(zhí)行Python 腳本的完整流程
這篇文章主要介紹了Jmeter并發(fā)執(zhí)行 Python 腳本的問(wèn)題詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
利用Python實(shí)現(xiàn)一個(gè)類似MybatisPlus的簡(jiǎn)易SQL注解
在實(shí)際開(kāi)發(fā)中,根據(jù)業(yè)務(wù)拼接SQL所需要考慮的內(nèi)容太多了,于是,有沒(méi)有一種辦法,可以像MyBatisPlus一樣通過(guò)配置注解實(shí)現(xiàn)SQL注入呢?本文給大家介紹了如何利用Python實(shí)現(xiàn)一個(gè)類似MybatisPlus的簡(jiǎn)易SQL注解,需要的朋友可以參考下2025-08-08
30道python自動(dòng)化測(cè)試面試題與答案匯總
對(duì)于機(jī)器學(xué)習(xí)算法工程師而言,Python是不可或缺的語(yǔ)言,它的優(yōu)美與簡(jiǎn)潔令人無(wú)法自拔,下面這篇文章主要給大家介紹了關(guān)于30道python自動(dòng)化測(cè)試面試題與答案匯總的相關(guān)資料,需要的朋友可以參考下2023-03-03
關(guān)于如何把Python對(duì)象存儲(chǔ)為文件的方法詳解
本文將給大家介紹如何把Python對(duì)象存儲(chǔ)為文件的方法,pickle可以用二進(jìn)制表示并讀寫python數(shù)據(jù),這個(gè)功能并不安全,如果把一個(gè)pickle暴露給別人,有被植入惡意程序的風(fēng)險(xiǎn),文中通過(guò)代碼給大家講解的非常詳細(xì),需要的朋友可以參考下2024-01-01
Anaconda環(huán)境GDAL庫(kù)基于whl文件的配置方法
這篇文章主要介紹了Anaconda環(huán)境GDAL庫(kù)基于whl文件的配置方法,我們介紹了基于conda?install命令直接聯(lián)網(wǎng)安裝GDAL庫(kù)的方法,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04

