如何生成等概率地求和到预定义值的随机数?
生成与预定义值求和的随机数
在这种情况下,我们的目标是生成一个伪随机数列表,这些伪随机数共同添加直至特定的预定值。一种方法是随机生成指定范围内的数字,将其从总数中减去,然后重复此过程,直到总和等于所需值。然而,这种方法在对总和的贡献方面有利于第一个生成的数字。
为了确保一致性,我们开发了一个更复杂的解决方案:
<code class="python">import random def constrained_sum_sample_pos(n, total): """Return a randomly chosen list of n positive integers summing to total. Each such list is equally likely to occur.""" dividers = sorted(random.sample(range(1, total), n - 1)) return [a - b for a, b in zip(dividers + [total], [0] + dividers)]</code>
登录后复制
此方法生成一个列表总和为目标值的正整数。关键概念是每种可能的数字组合都有相同的可能性生成。此外,将此技术扩展到不同的总计和不同数量的随机数非常简单。
例如,如果我们将 n 设置为 4,总计设置为 40,我们可能会获得以下输出:[4, 4, 25 ,7]。需要注意的是,此列表中的每个元素相加后都会生成预定义值 40。
为了允许非正整数,可以进行修改:
<code class="python">def constrained_sum_sample_nonneg(n, total): """Return a randomly chosen list of n nonnegative integers summing to total. Each such list is equally likely to occur.""" return [x - 1 for x in constrained_sum_sample_pos(n, total + n)]</code>
登录后复制
通过将每个值加一,我们可以生成一个非负整数列表,加起来等于所需的总数。
此方法确保每种可能的组合,无论数字是正数还是非负数,产生的概率相等。凭借其用户友好的实现和跨不同场景的多功能性,constrained_sum_sample_pos 和 constrained_sum_sample_nonneg 已成为 Python 中随机数生成任务不可或缺的一部分。
以上是如何生成等概率地求和到预定义值的随机数?的详细内容。更多信息请关注PHP中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前
By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保护它?
3 周前
By DDD

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)