【问题标题】:Connecting condition check and random choice连接条件检查和随机选择
【发布时间】:2020-12-02 16:17:30
【问题描述】:

我对检查条件和之后运行随机选择有疑问,这取决于此检查。 为了简单起见:我有六个可能的结果(例如名字),每个结果都有一个特定的概率用于以下随机选择实验。如果实验结果是 1,我想打印一个文本或类似的东西(不重要)。我的问题是是否有可能将结果检查集成到以下循环中或/以及是否有办法找到比我的第一种方法更顺畅的解决方案:

Name = 'Tom' # (result of another process)
p_tom = 0.32
p_daniel = 0.19
#(and so on…)
employees = ['Tom', 'Daniel', 'Clarke', 'Eric', 'William', 'Max']
for i in employees:
     if name in employees and employees == 'Tom':
         result = np.random.binomial(1,p_tom)

提前致谢。我在 python 中的步骤只是略有改进。

【问题讨论】:

  • employees == 'Tom' - 永远不会是True
  • 你的意思是name == 'Tom'

标签: python numpy random


【解决方案1】:

问题是

  1. 你的名字和名字不一样
  2. 你还没有导入 numpy
  3. pip3 安装 numpy

看看这个:

from numpy import random
Name = "Tom" #(result of another process)
p_tom = 0.32
p_daniel = 0.19
#(and so on…)
employees = ["Tom", "Daniel", "Clarke", "Eric", "William", "Max"]
for i in employees:
     if Name in i :
         result = random.binomial(1,p_tom)
         print(result)
         

【讨论】:

  • 谢谢! (我导入了numpy,上面这段代码只是一个sn-p)
【解决方案2】:

employees == 'Tom' - 永远不会是 True - employees 是一个列表,而不是一个字符串。

这样做会更好

import numpy as np

name = 'Tom' # (result of another process)

specific_prob = {'Tom':0.32, 'Daniel':0.19, 'Clarke':0.05, 'Eric':0.29} # etc

employees = ['Tom', 'Daniel', 'Clarke', 'Eric', 'William', 'Max']
for i in employees:
    result = np.random.binomial(1,  specific_prob.get(name, 0.42))
    # do something

不需要条件,如果名称不在您的 specific_prob 中,则假定为 0.42:请参阅 Why dict.get(key) instead of dict[key]?

【讨论】:

  • 谢谢,这似乎更有效。是否也可以将“结果”检查添加到循环中?因此,如果对“Tom”的检查为真并且二项式实验为 1,那么会打印一些内容吗? (我不确定,我可以在哪一层添加这个检查结果)
  • @TimSqua ...直接在result = ...下面放if result==1: do smth?你知道多少蟒蛇?
猜你喜欢
  • 2021-01-09
  • 2016-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多