我遇到的问题如下
我有一个带有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循环或列表理解,但我正在寻找一个快速/矢量化的解决方案.
choices = [a,a,a,a,b,b,c]
random.choice(choices)
Run Code Online (Sandbox Code Playgroud)
正如你所看到的那样,最有可能被选中,但有更好/更短的方式吗?
我如何编写一个函数来为我提供列表元素的随机索引,但基于列表中的概率?
该列表看起来像这样,有 5 个元素。
a = [0.1, 0.2, 0.4, 0.2, 0.1]
Run Code Online (Sandbox Code Playgroud)
有没有简单快速的解决方案?谢谢
我正在制作一个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%。我怎么做?
例如,我有以下三个选项:
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中发生的那些概率的同时随机选择一个的最佳方法是什么?
此功能具有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)
但是我不确定这是否是一个好主意。您能否提出实现我的建议的更好方法?谢谢〜
我已经看过这个问题并且知道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)
我需要按以下要求重新填充Right和Left列
Right,并Left等于Number of polypsRight与Left来自加权概率它们的当前值例如,对于给定的行,如下所示:
Number of polyps Right Left
10 3 2
Run Code Online (Sandbox Code Playgroud)
因此,对于此行,可能如下所示。这里0.6= 3/(3+2)和0.4= 2/(3+2): …
我正在使用目前使用以下代码的数字生成器
from random import randint
print(randint(0,1))
Run Code Online (Sandbox Code Playgroud)
虽然它工作,我需要生成0或1,但我需要生成器生成1 with a x (say 80%)概率
我怎么能在python中有效地实现这一点?
我有清单a和b
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)