相关疑难解决方法(0)

如何将numpy random.choice应用于概率值矩阵(Vectorized solution)

我遇到的问题如下

我有一个带有3个值的1-D整数列表(或np.array)

l = [0,1,2]
Run Code Online (Sandbox Code Playgroud)

我有一个二维概率列表(为简单起见,我们将使用两行)

P = 
[[0.8, 0.1, 0.1],
 [0.3, 0.3, 0.4]]
Run Code Online (Sandbox Code Playgroud)

我想要的是numpy.random.choice(a=l, p=P),P(概率分布)中的每一行都应用于l.所以,我希望从[0,1,2]中随机抽取一个随机样本.DIST.首先是[0.8,0.1,0.1],然后是概率.DIST.[0.3,0.3,0.4]接下来,给我两个输出.

=====更新======

我可以使用for循环或列表理解,但我正在寻找一个快速/矢量化的解决方案.

python numpy

4
推荐指数
1
解决办法
2781
查看次数

是否有更好的方法从列表中随机选择:

choices = [a,a,a,a,b,b,c]
random.choice(choices)
Run Code Online (Sandbox Code Playgroud)

正如你所看到的那样,最有可能被选中,但有更好/更短的方式吗?

python python-3.x

4
推荐指数
1
解决办法
48
查看次数

Python随机列表索引与概率

我如何编写一个函数来为我提供列表元素的随机索引,但基于列表中的概率?

该列表看起来像这样,有 5 个元素。

a = [0.1, 0.2, 0.4, 0.2, 0.1]
Run Code Online (Sandbox Code Playgroud)

有没有简单快速的解决方案?谢谢

python

3
推荐指数
2
解决办法
3087
查看次数

我想做出随机选择,但要为其值赋权

我正在制作一个RPG战利品生成器,并且尝试对每种稀有物品的权重进行随机选择。我怎么做?

Item_rarity = ["Common", "Uncommon", "Superior", "Rare", "Legendary"]
Rarity_choice = random.choice(Item_rarity)
Run Code Online (Sandbox Code Playgroud)

我希望Common = 50%;罕见= 30%;上等= 14%; 稀有= 5%;传奇人物= 1%。我怎么做?

python random

3
推荐指数
1
解决办法
46
查看次数

假设我有三个加权选择:我如何随机选择一个?

例如,我有以下三个选项:

 Option 1
 Option 2
 Option 3
Run Code Online (Sandbox Code Playgroud)

我想随机选择其中一个,但有一定的概率偏差.例如:

 Option 1: 30% chance
 Option 2: 50% chance
 Option 3: 20% chance
Run Code Online (Sandbox Code Playgroud)

那么,在保留python中发生的那些概率的同时随机选择一个的最佳方法是什么?

python random probability

2
推荐指数
2
解决办法
1346
查看次数

函数可以在其定义内使用不同的参数调用自身吗?

此功能具有3种模式,即“ hh”,“ ih”和“ ho”。

    def mutate_add_connection(self, mode = 'hh'):
        if mode == 'hh':    # hidden --> hidden
            node_a = random.choice(self.hidden_nodes_dict.values())
            node_b = random.choice(self.hidden_nodes_dict.values())
            self.connect_node_pair(node_a,node_b, 'sort')
        elif mode == 'ih':  # input --> hidden
            node_a = random.choice(self.input_nodes_dict.values())
            node_b = random.choice(self.hidden_nodes_dict.values())
            node_b.set_links((node_a,random.choice([-1, 1])))
        elif mode == 'ho':  # hidden --> output
            node_b.set_links((node_a,random.choice([-1, 1])))
            node_a = random.choice(self.hidden_nodes_dict.values())
            node_b = random.choice(self.output_nodes_dict.values())
Run Code Online (Sandbox Code Playgroud)

在添加连接变异的实践中,我需要使用这三种模式。每种模式不要说33.33%。

因此,我计划在此功能中添加模式“自动”。为了将以上三种模式称为“随机”。

    def mutate_add_connection(self, mode = 'hh'):
        if mode == 'auto':
            chosen_mode = random.choice(['hh','ih','ho'])
            self.mutate_add_connection(mode=chosen_mode)
        # the code above .......
Run Code Online (Sandbox Code Playgroud)

但是我不确定这是否是一个好主意。您能否提出实现我的建议的更好方法?谢谢〜

python function call

2
推荐指数
1
解决办法
42
查看次数

如何在数据集中的python中通过加权概率获得均匀分布?

我已经看过这个问题并且知道numpy.random.choice,但是我的问题略有不同。

鉴于此,我有一个数据集,如下所示:

dict ={"Number of polyps":[10,8,3,1,2,6,13],
        "Right ":[3,2,3,1,0,3,3],
        "Left":[2,2,4,15,6,7,1] }

dt = pd.DataFrame(dict)
Run Code Online (Sandbox Code Playgroud)

因此,它是:

Number of polyps  Right   Left
            10       3     2
             8       2     2
             3       3     4
             1       1    15
             2       0     6
             6       3     7
            13       3     1
Run Code Online (Sandbox Code Playgroud)

我需要按以下要求重新填充RightLeft

  1. 的总和Right,并Left等于Number of polyps
  2. 的值RightLeft来自加权概率它们的当前

例如,对于给定的行,如下所示:

Number of polyps  Right   Left
            10       3     2
Run Code Online (Sandbox Code Playgroud)

因此,对于此行,可能如下所示。这里0.6= 3/(3+2)0.4= 2/(3+2): …

python numpy probability pandas uniform-distribution

2
推荐指数
1
解决办法
66
查看次数

产生随机数的概率为1

我正在使用目前使用以下代码的数字生成器

from random import randint
print(randint(0,1))
Run Code Online (Sandbox Code Playgroud)

虽然它工作,我需要生成0或1,但我需要生成器生成1 with a x (say 80%)概率

我怎么能在python中有效地实现这一点?

python

1
推荐指数
1
解决办法
96
查看次数

如何根据概率从列表中选择项目

我有清单ab

a = [0.1, 0.3, 0.1, 0.2, 0.1, 0.1, 0.1]

b = [apple, gun, pizza, sword, pasta, chicken, elephant]
Run Code Online (Sandbox Code Playgroud)

现在,我想创建一个包含3个项目的新列表c

根据列表a中的概率从列表b中选择这3个项目

这些项目不应在列表c中重复

例如-我正在寻找的输出

c = [gun,sword,pizza]
Run Code Online (Sandbox Code Playgroud)

要么

c = [apple, pizza, pasta]
Run Code Online (Sandbox Code Playgroud)

注意 (列表a的所有值的总和为1,列表a和b中的项目数相同,实际上我在列表a和b中都有一千个项目,我想根据分配的概率从列表中选择一百个项目)给他们,python3)

python probability python-3.x

1
推荐指数
1
解决办法
379
查看次数