按概率随机选取
2017-06-17 12:21
253 查看
上一篇笔记的pygame游戏对敌人和白云的移动速度使用了随机函数
据我了解,
但是,我不想为这么一个函数引入巨大的numpy库,所以打算自己实现一个按概率随机选取的函数。
特此将代码记录如下:
randint(),游戏体验不是太好。如果是按概率随机选取设置速度的话,游戏体验会好一些。
据我了解,
random.choice(seq)是等概率选取一个,不是我想要的。而
numpy.random.choice(seq, p, k)是按概率随机重复选取多个,这正是我想要的。
但是,我不想为这么一个函数引入巨大的numpy库,所以打算自己实现一个按概率随机选取的函数。
特此将代码记录如下:
# 作者:hhh5460 # 时间:2017年6月17日 import random # 根据概率随机选取 def random_choice(seq, prob, k=1): ''' 功能: 按给定概率prob,从seq中选取元素。可重复k次 注意 1. seq, prob长度要相等 2. prob的概率和要等于1 3. k 表示重复选取的次数,默认为1次 4. 结果返回list 5. 用到了random模块的random()函数 例子: >>> random_choice(['a','b','c','d'], [0.4, 0.15, 0.1, 0.35]) ['d'] >>> random_choice('abcd', [0.4, 0.15, 0.1, 0.35], k=5) ['d','d','b','a','d'] ''' res = [] for j in range(k): p = random.random() for i in range(len(seq)): if sum(prob[:i]) < p <= sum(prob[:i+1]): res.append(seq[i]) return res # 测试 def test(): print(random_choice(['a','b','c','d'], [0.4, 0.15, 0.1, 0.35], k=5)) test()
相关文章推荐
- 写一个函数,随机地从大小为n的数组中选取m个整数。要求每个元素被选中的概率相等。
- 单次遍历,等概率随机选取问题
- 海量数据等概率随机选取问题
- 趣题:随机选取两个无穷大的图,求两者相同的概率
- 单次遍历,等概率随机选取问题
- 一次遍历,等概率随机排列数组与带权随机选取问题
- 单次遍历,等概率随机选取问题
- 遍历n个元素取出等概率随机取出其中之一元素
- 程序员面试金典——解题总结: 9.18高难度题 18.3编写一个方法,从大小为n的数组中随机选出m个整数。要求每个元素被选中的概率相同。
- 谷歌面试题:从无穷尽的流中随机的选取1000个关键字(蓄水池抽样)
- Reservoir sampling 数组随机等概率选择样品
- 等概率、O(n)复杂度求随机排列
- 用优先级随机概率解决'今天吃神马问题
- 产生随机概率的c方法
- 等概率无重复的从n个数中选取m个数
- 前端面试题:高效地随机选取数组中的元素
- js 随机选取颜色
- 实际中常用的一个随机数产生器(分类别概率随机) 推荐
- 从n个数中随机选取m个
- MYSQL 随机选取几条数据