java生成zipf分布_在Python中如何从范围为n的Zipf分布中创建值?

我同意最初的答案(Felix),把Zipf值强制到一个特定的范围是一件非常不寻常的事情,很可能意味着你做错了什么。在

话虽如此,我实际上也遇到了一个类似的问题,我确实需要生成符合特定标准的Zipf值。在我的例子中,我希望生成一个全新的数据集,它类似于现有的数据集。我希望总和与现有分布相同,但值不同。在

我的见解是,在得到你喜欢的值之前,可以多次重新生成这些值。在#Generate a quantity of Zipf-distributed values close to a desired sum

def gen_zipf_values(alpha, sum, quantity):

best = []

best_sum = 0

for _ in range(10):

s = np.random.zipf(alpha,quantity)

this_sum = s.sum()

if (this_sum > best_sum) and (this_sum <= sum):

best = s

best_sum=this_sum

return best

同样,这个解决方案是为我的问题量身定做的,我想生成接近于和的值,而不必重复。我也很清楚我希望alpha每次都是什么样子。为了清楚起见,我省略了一些条件检查、排序等。在

但是,如果您不得不多次这样做(即,您必须运行for循环100万次才能得到您的分布),那么您可能有问题(比如alpha,或者对值的不切实际的期望)。我觉得“让电脑来做这件事”或者从一些合理的选择中挑选出最好的选择是正确的。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值