我有一个给定的价格范围,并且我使用随机制服来从中获得随机生成的随机结果。我该如何介绍np.random.zipf
做同样的事?
我已经尝试过以下方法:
a = np.random.zipf((randint(1, 6000000)), size=None)
print(a)
但它似乎没有提供返回值,并且它继续运行代码而没有任何终止
order_total_price_range1 = round(random.uniform(850, 560000), 5)
order_total_price_range2 = round(random.uniform(850, 560000), 5)
我期望从中获得最大值和最小值zipf
分发,但目前没有返回任何结果。
虽然 @RobinNicole 是正确的 Zipf 分布,但您可以使用离散采样来模拟截断的 Zipf。沿着线
import numpy as np
from matplotlib import pyplot as plt
def Zipf(a: np.float64, min: np.uint64, max: np.uint64, size=None):
"""
Generate Zipf-like random variables,
but in inclusive [min...max] interval
"""
if min == 0:
raise ZeroDivisionError("")
v = np.arange(min, max+1) # values to sample
p = 1.0 / np.power(v, a) # probabilities
p /= np.sum(p) # normalized
return np.random.choice(v, size=size, replace=True, p=p)
min = np.uint64(3)
max = np.uint64(8)
q = Zipf(1.2, min, max, 10000)
print(q)
h, bins = np.histogram(q, bins = int(max-min+1),range=(min-0.5,max+0.5))
print(h)
print(bins)
plt.hist(q, bins = bins)
plt.title("Zipf")
plt.show()
将制作这样的图表
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)