Python根据数值大小随机返回一个key,并保证返回这个key的概率和它所对应的value成正比
来源:互联网 发布:知乐作品全集百度云 编辑:程序博客网 时间:2024/06/06 16:57
题目:def randomSymbol(symbolAndWeight):
”’
Input: symbolAndWeight is a dict of { str: int },
for example, {
‘a’: 2,
‘b’: 3,
‘c’: 5,
}
Returns:
随机返回symbolAndWeight中的一个key,并保证返回这个key的概率和它所对应的value成正比
解答:
#coding:utf-8import randomclass t(): def __init__(self): pass def loadData(self): testData = {'a': '2', 'b': '3', 'c': '5'} return testData def randomSymbolol_1(self): testData = self.loadData() new_data = {v: k for k, v in testData.items()} keys = new_data.keys() list = [] for key in keys: for i in range(int(key)): list.append(new_data[key]) index = random.randint(0,len(list)-1) return list[index] def randomSymbolol_2(self): testData = self.loadData() new_data = {v: k for k, v in testData.items()} keys = new_data.keys() keySum = 0 for key in keys: keySum += int(key) ran = random.randint(0, keySum-1) sumtmp = 0 N = len(keys) for i in range(N): sumtmp += int(keys[i]) if sumtmp > ran: a = i return a return -1t = t()i = 0a_total1 = 0b_total1 = 0c_total1 = 0while i < 10000: temp = t.randomSymbolol_2() if temp == 1: a_total1 += 1 elif temp == 0: b_total1 += 1 else: c_total1 += 1 i += 1print "result of method 1:"print "a:", a_total1/float(10000)print "b:", b_total1/float(10000)print "c:", c_total1/float(10000)a_total2 = 0b_total2 = 0c_total2 = 0j = 0while j < 10000: temp = t.randomSymbolol_1() if temp == 'a': a_total2 += 1 elif temp == 'b': b_total2 += 1 else: c_total2 += 1 j += 1print "result of method 2:"print "a:", a_total2/float(10000)print "b:", b_total2/float(10000)print "c:", c_total2/float(10000)
参考链接:http://blog.sciencenet.cn/home.php?mod=space&uid=404069&do=blog&id=335920
阅读全文
0 0
- Python根据数值大小随机返回一个key,并保证返回这个key的概率和它所对应的value成正比
- 返回map中最大值value及其对应的key
- hibernate通过sql查询返回一个key value对应的map对象型集合
- LinkedHashMap实现分组排序(保证有序性),并实现map的一个key值对应多个value
- Map中根据value排序---输出value最大时所对应的Key
- 根据表单的name(名字)数组,返回对应的Map对象。Map对象的key是表单的name,Map对象的value是表单的value
- 如何能通过hashmap的value来返回其对应的键值key
- java 通过map的value返回其对应的key (遍历map)
- 根据value取得map中对应的key(笔记)
- 根据value取得map中对应的key
- iOS 根据某个value找到Dictionary对应的key值
- iOS 根据value取到 Dictionary 对应的key值
- Extjs store根据key获取对应的value
- Redis的key和value大小限制
- mybatis的返回形式(bo---map(key--value))
- 如何循环获取html的值,并拼写到json/json,求value所对应key的值
- 多个KEY值对应一个VALUE的MAP
- MultiValueMap的用法(一个key对应多个value)
- oracle中的区间查询(类似mysql中的limit)
- Ubuntu深度学习装机步骤(一)
- C# SQL 分页封装
- hive sql语句执行原理
- 盘点各专业到古代都能干些啥
- Python根据数值大小随机返回一个key,并保证返回这个key的概率和它所对应的value成正比
- mybatis源码解析
- JS键盘事件
- Mediator模式
- linux中wget 、apt-get、yum rpm区别
- oracle的sql查询
- 项目中如何使用solr
- Cookie的分类和Cookie的常用API
- 内存分配与回收策略