Python中给定PDF的随机数

2024-10-03 21:28:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我想生成一个整数随机数,概率分布函数以列表形式给出。 例如,如果pdf=[3,2,1],那么我喜欢 rndWDist(pdf) 返回0、1和2,概率为3/6、2/6和1/6。 我写了我自己的函数,因为我在随机模块中找不到它。在

def randintWDist(pdf):
    cdf=[]
    for x in pdf:
        if cdf:
            cdf.append(cdf[-1]+x)
        else:
            cdf.append(x)
    a=random.randint(1,cdf[-1])
    i=0
    while cdf[i]<a:
        i=i+1
    return i

有没有更短的方法可以达到同样的效果?在


Tags: 模块函数in列表forpdfdef整数
1条回答
网友
1楼 · 发布于 2024-10-03 21:28:57

我看到您关于排除依赖项的说明,这就是为什么您不想使用maven shaded插件。我不确定这对Groovy类的效果如何

(但值得向我自己和其他Java新手明确指出:maven-jar-plugin不包括依赖项)

第一种可能性:Java之所以会发牢骚,是因为它找不到Groovy,而且真的想要它吗

我发现了一个SO answer about ability to load main classes that extend from dependent classes

我知道一个没有显式类声明的普通Groovy脚本文件compiler wraps that up in a class it extends from (Groovy's) Script。我不知道如果您编写自己的显式类会发生什么-我会打开包。jar并使用Java Decompiler来查看生成的代码,看看这是否为您提供了任何线索

第二种可能性:包名

Groovy为您创建一个类的特性如果您没有显式声明一个类,那么它似乎不能将这个隐式Java类放在基于目录结构的包中。我认为这在过去是有效的:不确定我是否在这里看到一个bug、一个新功能,或者我是否记错了

因此,有两种方法可以解决这个问题:

  1. 向Groovy脚本添加package声明

    package com.example.hello
    println "I'm Groovy!"
    
  2. 让mavenmainClass标记引用没有包名称空间的类(即:GroovyHello而不是com.example.hello.GroovyHello

相关问题 更多 >