如何生成具有给定限制和平均值的随机数? [复制]

2024-04-04

我想生成一系列 30 个随机数,其中上限为 40,下限为 12,平均值为 23。总结:

n = 30

最小值 = 12

最大值 = 40

平均值 = 23

提前致谢。


如果您想要连续分布,您可以获得最小值和最大值之间的任何浮点值,一种可能性是三角分布 https://en.wikipedia.org/wiki/Triangular_distribution其均值等于(min+max+mode)/3。给定平均值、最小值和最大值,这意味着您需要mode = 3 * mean - min - max。这产生mode = 17对于你的问题。Numpy 提供了三角分布生成器 https://numpy.org/doc/stable/reference/random/generated/numpy.random.Generator.triangular.html#numpy.random.Generator.triangular.

如果您想要一个离散分布,其中结果都是整数,您可以考虑二项分布 https://en.wikipedia.org/wiki/Binomial_distribution随着变速。二项式分布有参数n and p,范围为{0,...,n}平均值等于n*p。由于您希望最小值为 12,最大值为 40,因此您需要通过减去最小值来移动所有目标值。您将生成一个二项式n = max - min = 28和一个平均值23 - 12 = 11。那需要28 * p = 11, or p = 11/28。通过添加最小值将结果移回您想要的范围来生成最终结果,即X = binomial(n = 28, p = 11/28) + 12.

您在评论中说您想在 python 中执行此操作,因此这里有一些代码说明了这两个发行版:

import numpy as np

rng = np.random.default_rng()

sample_size = 30
min, max = 12, 40

# Triangular
mode = 17
print(rng.triangular(min, mode, max, sample_size))

# Binomial
n, p = 28, 11/28  # number of trials, probability of each trial
print(rng.binomial(n, p, sample_size) + 12)

请注意,范围限制是有保证的,但对于这两种情况,接近范围极值的值都极其罕见。如果您想要更多地出现最小值和最大值,则需要挖掘具有“更胖”尾部的有界分布。实现此目的的一种方法是生成混合分布,例如翻转加权硬币以从三角形或均匀分布生成。由于统一的均值处于中间范围 (26),因此如果您使用 50/50 权重,则这需要您将二项式或三角形的均值调整为 20,以便产生 23 的总体目标均值。例如,要获得二项式和离散制服的混合:

sample_size = 30
min, max = 12, 40

n, p = 28, 8/28  # adjust p to get mean of 20 after shifting by 12
binom = rng.binomial(n, p, sample_size // 2) + 12
unif = rng.integers(min, high = max + 1, size = sample_size // 2)
pooled = np.concatenate((binom, unif))
rng.shuffle(pooled)
print(pooled)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何生成具有给定限制和平均值的随机数? [复制] 的相关文章

随机推荐

  • 通知通知时发生 TransactionTooLargeException

    我在 android 中录制时有更新时间 我使用 CountDownTimer 并根据通知更新到远程视图 我已经优化了最小的 数据但仍然得到 TransactionTooLargeException public void showNoti
  • 将 DMS 坐标转换为 R 中的十进制

    我有以下 DMS 格式的坐标 我需要将它们转换为十进制 Libraries gt library sp gt library magrittr Latitide Longitude as strings gt lat lt 21d11m24
  • C:赋值中的类型不兼容

    我正在编写一个程序来检查端口是否在 C 中打开 特别是其中一行将参数之一复制到 char 数组 然而 当我尝试编译时 它说 错误 类型不兼容 任务 这是代码 错误在于分配addr include
  • 如何从纯 python 创建 yaml 文件?

    示例来自将 YAML 与 Python 结合使用 http mikkel elmholdt dk p 4 原始 YAML 文件包含此内容 tree format treeroot branch1 name Node 1 branch1 1
  • Apache Beam 中的异步 API 调用

    正如标题所说 我想使用 python 在 apache beam 中进行异步 API 调用 目前 我正在为 Pcollection 中的每个元素调用 DoFn 内的 API 自由度代码 class textapi call beam DoF
  • Material UI 中的相同高度的卡片

    尝试使用 3 张水平卡片 但高度相同且响应灵敏 Like 卡A 卡 B 卡C 覆盖渲染组件
  • 切换 elseif 来切换 case

    我们如何将下面的 if else 语句切换为 switch case 语句 任何人都可以帮忙解决这个问题 if Webcc1 Contains licensePartID dtExpiryDate dtActivatedDate AddYe
  • 在 Android APK 中嵌入版本详细信息

    我的代码存储在SVN版本控制中 我使用 Eclipse 来构建我的 Android 应用程序 在我的应用程序中 我有一个关于框 我想在其中显示正确的源代码控制修订版 标签 任何内容 有没有一种方法可以自动执行此操作 以便我在 关于 框中的版
  • 如何在 Ruby 中拆分字符串并获取除第一个之外的所有项目?

    字符串是ex test1 test2 test3 test4 test5 当我使用 ex split first 它返回 test1 现在我想获取剩余的项目 即 test2 test3 test4 test5 如果我使用 ex split
  • 默认情况下,鼠标单击是否会将键盘焦点带到可聚焦控件上?

    这个问题看起来很奇怪 但根据我的经验 我已经习惯了只需用鼠标单击即可将键盘焦点设置到可聚焦元素 但是 UserControl 具有以下属性Focusable true and IsTabStop true让我感到惊讶的是 它通过 Tab 获
  • 如何监控 TensorFlow 估计器训练中的验证损失?

    我想问一个关于如何在 TensorFlow 估计器的训练过程中监控验证损失的问题 我查过类似的问题 估计器训练期间的验证 https stackoverflow com questions 45417502 validation durin
  • 如何在 MATLAB 中执行此累积和?

    我想计算第 2 列中的值的累积和dat txt下面是第 1 列中的每个字符串 所需的输出显示为dat2 txt dat txt dat2 txt 1 20 1 20 20 20 0 1 22 1 22 42 20 22 1 20 1 20
  • 解析树和抽象语法树(AST)有什么区别?

    它们是由编译过程的不同阶段生成的吗 或者它们只是同一事物的不同名称 这是基于表达评估器 http www antlr3 org works help tutorial calculator html泰伦斯 帕尔的语法 本例的语法 gramm
  • 修复了左侧的侧边栏菜单和顶部的固定标题

    所以我想做的是一个固定的侧边栏 顶部有一个固定的菜单 中间的内容可以滚动 body html height 100 margin 0 aside background 90EE90 height 100 left 0 position fi
  • validateRequest="false" 不起作用,即使 requestValidationMode="2.0"

    我有一个在 Visual Studio dev fabric azure 项目 中运行的 ASP NET 网站 并且正在使用 ACS 和 WIF 我的身份验证过程无法正常工作 因为登录后我收到以下信息 A potentially dange
  • Node.js 中的客户端-服务器通信

    我最近开始使用 Node js 来制作一个在线游戏 用于教育 通过阅读各种教程 我想出了如下所示的简单代码 使用我拥有的代码 我能够进行客户端 服务器通信 这基本上是我制作游戏所需的全部内容 只有一个问题 只有客户端可以发起会话 而服务器只
  • 在 gridview 中显示数据库中的数据

    有谁知道如何将数据库条目放入android中的gridview中 或者是否有一个教程解释了如何做到这一点 请通过提供完整的示例来帮助我 您将需要使用游标适配器 http developer android com reference and
  • 当片段更改时如何更新视图?

    我有一个活动 其中有 2 个 sherlockfragment 前两个页面显示带有自定义列表视图的片段 这些视图是使用 AsyncTask 从服务器的 xml 构建的 但是 当应用程序运行时 仅显示一个列表视图 另一页只是空白 public
  • new URL() - WHATWG URL API

    我正在摆弄节点 并试图获取 URL 类的实例 因为这些方便的属性 喜欢 const URL require url http createServer request response gt let uri new URL request
  • 如何生成具有给定限制和平均值的随机数? [复制]

    这个问题在这里已经有答案了 我想生成一系列 30 个随机数 其中上限为 40 下限为 12 平均值为 23 总结 n 30 最小值 12 最大值 40 平均值 23 提前致谢 如果您想要连续分布 您可以获得最小值和最大值之间的任何浮点值 一