#!/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 函式來設定隨機序列開始種子的話,預...