python - 如何从大量数字中生成有偏随机数
问题描述
我想让 Python 3.7.1 选择一个介于 0 和 100 之间的数字。但是我希望以反向指数平滑毕业曲线的方式(没有准确地说)。
我想我可以从
myrandomnumber = random.randint(0, 100)
然后将其链接到某种数组以确定每个数字的不同百分比。我见过其他人用随机掷骰子来做到这一点,但问题是,这对于六种可能性来说非常简洁,我想这样做一百(或更多)并且不想坐在那里做一个巨大的仅为此而包含一百个条目的数组。当然,我想我可以这样做,但我觉得 Python 可能有一个非常简单的方法可以做到这一点,而我却错过了。
谢谢各位!
解决方案
您可能想要的是一个伽马分布的随机数。
例如使用k=1
and θ=2.0
:
有一些算法可以使用均匀分布random
函数来生成normal
、exponential
或gamma
分布值。
但既然你在 python 中,你可能会直接跳到使用 numpy 的random.gamma
函数:
#the (1,2) shape ends basically at 20. Multiply by 5 to get my 0..100 scale
numpy.random.gamma(1, 2.0) * 5
推荐阅读
- python - 如何计算实际总字段的总值并将此值存储在odoo模型中的另一个字段中?
- java - persistence.xml 配置到纯 Java JDO 配置
- spring - Hibernate/JPA - 是否可以有一个具有父母 ID + 另一个字段的孩子?
- python - 用于 Excel 的 Python 自动化
- python - 为什么我无法在下拉列表中选择项目?
- git - 无法更新 git 以使用访问令牌而不是密码
- python-3.x - 如何在加载 Tkinter 窗口后让 tts (pyttsx3) 说话
- mysql - 将值从客户表访问到房间类型表
- c++ - While 条件:如何允许在非整数/双用户输入和整数限制之间进行比较
- npm - NPM 给出错误-TypeError:无法解构“未定义”或“空”的属性“stat”