python 獲取帶權重的隨機數

2021-09-30 01:50:24 字數 850 閱讀 4177

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import random

def random_weight(weight_data):

total = sum(weight_data.values()) # 權重求和

ra = random.uniform(0, total)# 在0與權重和之前獲取乙個隨機數

curr_sum = 0

ret = none

keys = weight_data.iterkeys() # 使用python2.x中的iterkeys

#   keys = weight_data.keys()    # 使用python3.x中的keys

for k in keys:

curr_sum += weight_data[k]# 在遍歷中,累加當前權重值

if ra <= curr_sum: #當隨機數<=當前權重和時,返回權重key

ret = k

break

return ret

weight_data =

# res = random_weight(weight_data)

ww = set()

dic ={}

for i in xrange(100):

res = random_weight(weight_data)

if res not in ww:

ww.add(res)

dic[res] = 1

else:

dic[res]+=1

print(dic)

獲取隨機數

c 中提供了隨機數函式rand 但是這個函式其實提供的數字是有限的,大概是0 32767,所以這就導致了兩個問題 1 獲取的的數字並不是隨機的,比如要取0 99的隨機數,那麼一般就是rand 100,由於32767 100 67,所以0 67的數字獲得到的次數會比68 99多一次。2 無法獲取到比3...

php 獲取隨機數

獲得最小和最大值之間隨機數,位數不足補零 function getrandnumber fmin fmax fileid date ymd his rand 100,999 fileid為 20100903 132121 908 這樣的的隨機數 function randomkeys length ...

Linux 獲取隨機數

偽隨機法 偽隨機法就是通過乙個確定性的演算法來獲取看似隨機或者亂序,在計算偽隨機序列時,如果使用的開始值不變化的,實際上獲取到的隨機序列的值順序是保持不變。例如在c中比較常用的隨機函式rand 是比較典型的偽隨機法。在呼叫rand 函式時,沒有顯示的呼叫srand 函式來設定隨機序列開始種子的話,預...