【发布时间】:2020-07-31 03:48:21
【问题描述】:
寻找一个模拟 range() 的 python 函数,但它是一个正态分布而不是一个设定的间隔。
所以我想要mynormrange(min, max, numberofpoints) 这样的东西,而不是range(min, max, interval)。反转分布的选项也很棒。
所以mynormrange(0, 100, 9) 会输出类似[0, 34, 47.5, 49.85, 50, 50.15, 52.5, 66, 100] 的内容,其中平均值附近的数字(在本例中为avg=50)更接近。
而逆 mynormrange(0, 100, 9, inverse=True) 将输出类似 [0, 0.15, 2.5, 16, 50, 84, 97.5, 99.85, 100] 的内容,其中边缘周围的数字(在本例中为 0 和 100)更接近。
我不想要随机性,所以 random.normal() 不能满足我的需要。
类似于 numpy 的 linspace() 但用于正态分布。
编辑:我只是要结合 linspace 和余弦乘以我想要的最大值。正弦的倒数。
【问题讨论】:
-
听起来你想要的是构造一个从 0 到 1 的普通、统一的范围(例如,0.1、0.2、0.3、... 0.9),然后将逆 cdf 映射到该范围上,这将给出分布的分位数。也许有一个分位数函数可以直接给出。
-
我认为相反,正如你所描述的,是将 cdf 映射到一个均匀间隔的列表上。
标签: python statistics normal-distribution