Python在字典中獲取帶權(quán)重的隨機(jī)值實(shí)現(xiàn)方式
更新時(shí)間:2022年11月30日 16:34:45 作者:什么都干的派森
這篇文章主要介紹了Python在字典中獲取帶權(quán)重的隨機(jī)值,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
一、前言
python在數(shù)組中隨機(jī)取值有現(xiàn)成的方法,但是要給每個(gè)隨機(jī)值被取到的概率加權(quán)重的話,可以參考下面這個(gè)方法
二、實(shí)現(xiàn)方式
import random
def random_with_weight(data_dict):
sum_wt = sum(data_dict.values()) # 計(jì)算權(quán)重和 sum_wt
ra_wt = random.uniform(0, sum_wt) # 隨機(jī)獲取 0-sum_wt 之間的一個(gè)浮點(diǎn)數(shù) ra_wt
cur_wt = 0
for key in data_dict.keys():
cur_wt += data_dict[key] # 遍歷并累加當(dāng)前權(quán)重值
if ra_wt <= cur_wt: # 當(dāng)隨機(jī)數(shù) <= 當(dāng)前權(quán)重和時(shí),返回權(quán)重對(duì)應(yīng)的key
return key
if __name__ == '__main__':
# 權(quán)重字典
data_dict = {'歷史': 1, '人文': 2, '科學(xué)': 8}
# 取十次測(cè)試結(jié)果
for _ in range(10):
value = random_with_weight(data_dict)
print(value)
# 歷史
# 科學(xué)
# 科學(xué)
# 科學(xué)
# 科學(xué)
# 科學(xué)
# 人文
# 科學(xué)
# 歷史
# 科學(xué)到此這篇關(guān)于Python在字典中獲取帶權(quán)重的隨機(jī)值的文章就介紹到這了,更多相關(guān)Python字典權(quán)重隨機(jī)值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用grappelli為django admin后臺(tái)添加模板
本文介紹了一款非常流行的Django模板系統(tǒng)--grappelli,以及如何給Django的admin后臺(tái)添加模板,非常的實(shí)用,這里推薦給大家。2014-11-11
Pytorch Tensor的統(tǒng)計(jì)屬性實(shí)例講解
今天小編就為大家分享一篇Pytorch Tensor的統(tǒng)計(jì)屬性實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12
python中l(wèi)ower函數(shù)實(shí)現(xiàn)方法及用法講解
在本篇文章里小編給大家整理的是一篇關(guān)于python中l(wèi)ower函數(shù)實(shí)現(xiàn)方法及用法講解內(nèi)容,有需要的朋友們可以學(xué)習(xí)參考下。2020-12-12

