【发布时间】:2021-05-04 06:57:29
【问题描述】:
我想选择一个范围,例如,60 到 80,并从中生成一个随机数。但是,在 65-72 之间我想要一个更高的概率,而除了这个 (60-64 和 73 到 80)之外的其他范围有更低的。
一个例子:
来自60-64 的73-80 也有 35% 的机会被选中。来自65-72 65% 的机会。
子范围中的元素的可能性相同。我正在生成整数。
此外,一个可扩展的解决方案会很有趣,这样人们就可以将其使用范围扩大到更高的范围,例如 1000-2000,但偏向于 1400-1600。
有人可以提供一些想法吗?
在此先感谢愿意贡献的人!
【问题讨论】:
-
你好,什么是更高的概率?你有它的一些规格还是正常分布好吗?如果是后者,只需使用 numpy 或 scipy 从正态分布中采样。
-
你的描述很模糊,这让我觉得你不知道你到底想要什么。当规范不明确时,一种流行的仿真建模选择是triangular distribution。使用numpy.org/doc/stable/reference/random/generated/…生成。
-
@EmersonOliveira -- 你想要一个“讲台”形分布,其中区间
[60,64]中的值和区间[73,80]中的值应该是平坦的 pdf=0.175,并且区间[65,72]中的值应该是平坦的 pdf=0.65?或者,您想要具有这些额外约束的正态分布吗? -
这是一个粗略的方法,你
a = numpy.array([0.65]*16 + [0.35]*5) a = a/sum(a) numpy.random.choice(numpy.arange(60, 81), p=a)其中60-75为 65% 的概率,其余 35% 考虑到所有在该 renage 同样可能@EmersonOliveira
标签: python numpy random scipy probability