【问题标题】:Unequally/ unevenly distributed random floats不均匀/不均匀分布的随机浮点数
【发布时间】:2020-04-04 22:39:25
【问题描述】:

如何在 X 和 Y 之间生成不均匀分布的随机浮点数,以便更有可能在 X 到 Y 内生成特定范围内的数字?

我确实搜索了很多关键字以找到类似的内容,包括:不均匀分布的随机数,或不均匀的噪声分布,或有偏差的随机浮点数,或加权随机数......

我所能找到的只是从一袋有限的值列表中随机选择,加权以便更有可能选择一些值,但我希望从 X 和 Y 之间的无限浮动范围中进行选择。

我还发现了很多关于如何不生成有偏随机数的文章,这与我想要的相反。

作为我试图用这些数字做什么的一个例子:如果你在一个白色方块上画黑色噪音,每个噪音点都在方块内的随机位置,如果你生成足够多的点,你就会有一个几乎是黑色的正方形。

如果您将随机性较高的概率分布在正方形中间,您将在正方形中间几乎画出一个柔和的黑点。这就是我想要生成的。

所以我的问题是:

  • 我确定这些算法存在,它们叫什么?
  • 也许有人可以用任何语言建议一个快速的实施方案吗?
  • 如何指定偏差的权重?例如:在特定范围内生成数字的可能性是 2 倍还是 5 倍?在我的圆点示例中,我相信如果在某个范围内获得数字的可能性增加 5 倍,那么圆点会更小更暗。
  • 如何指定分布的柔软度?例如:线性、长期、二次。在我的圆点示例中,我相信它会使圆点更软或更硬。

提前谢谢你!

【问题讨论】:

  • 只是一个想法,但如果你不关心所使用的语言以及它背后的原理,Cross Validated 上的人可能会准确地告诉你这叫什么以及你是如何实现的它在 R 中。分布是统计学家早餐吃的那种东西(它们在牛奶中保持松脆)。
  • 谢谢@JeroenMostert!我更喜欢 Javascript / Python 实现 TBH,但任何事情都会有所帮助!我正在寻找一个相当长一段时间的答案......

标签: math random statistics distribution


【解决方案1】:

这些一般称为绝对连续分布,下面是定义这种分布的两种方式。

对于许多流行的分布,例如正态分布、beta 分布和 gamma 分布,有一些特殊的方法可以使用这些分布生成随机数。事实上,对于正态分布,这种方法有很多不同的设计。对于有界范围内的数字,beta distribution 是一个理想的选择;它的两个参数(alphabeta)描述了可以满足您的目的的各种形状。 Python 有一个 random.betavariate(alpha, beta) 方法来生成 beta 分布的随机数。

【讨论】:

  • 是的!这正是我一直在寻找的,而且它有效!
  • 对于 Javascript,还有 github.com/stdlib-js/stdlib - 如果有人需要这个已经实现了
  • 嘿@peter-o ,是的,我使用 beta 函数从字面上生成噪声以查看随机性的分布。现在我知道它是如何工作的,我可以用许多其他方式应用它。您可以在这里确切地看到我在做什么:observablehq.com/@croqaz/randomness - 您可以使用 Alpha 和 Beta 滑块并查看图纸的源代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-08
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多