编写一个函数来计算阈值

Writing a function to calculate a threshold

我知道这个问题可能更多的是数学而不是编程,但我正在尝试解决它以编写一个简单的 Python 程序,所以我希望能在这里找到一些帮助。

我想知道如果弃权,候选人需要达到什么分数才能进入第二轮选举。规则很简单:如果候选人达到12.5%的登记选民,那么他就可以进入第二轮。

因此,如果弃权率为 50%,任何给定的候选人都需要获得投票者的 25% 才能进入第二轮投票。

我可以成功计算出如何将投票者的百分比分数转换为注册给定弃权的百分比分数。因此下面的函数,其中 percentage_candidate 是已表达的投票的百分比,弃权是未投票的登记选民总数的百分比:

def calc_percentage_registered(percentage_candidate, abstention):
    participation = 100-abstention
    registered_score = percentage_candidate*(participation/100)
    print(f'With a score of {percentage_candidate}% of the expressed voters and {abstention}% abstention, I have {registered_score}% of registered voters.')
    return registered_score

函数returns一个正确的输出。我 运行 它有几个示例值:

calc_percentage_registered(25,0)
calc_percentage_registered(25,25)
calc_percentage_registered(25,50)
calc_percentage_registered(25,75)

输出正确:

  With a score of 25% of the expressed voters and 0% abstention, I have 25.0% of registered voters.
With a score of 25% of the expressed voters and 25% abstention, I have 18.75% of registered voters.
With a score of 25% of the expressed voters and 50% abstention, I have 12.5% of registered voters.
With a score of 25% of the expressed voters and 75% abstention, I have 6.25% of registered voters.

现在我该如何计算候选人需要多少登记选民才能投弃权票?我知道我需要编写一个函数并向它传递一个参数(弃权),但我不知为何卡在了这一步,感觉自己像个白痴!

非常感谢大家的帮助

这是你要找的方程式吗?

def calc_percentage_registered_voters_needed(abstention, threshold=0.125):
    return threshold / (1-abstention)

calc_percentage_registered_voters_needed(abstention=0.6)

您需要将所用的百分比项除以 100。

假设总人口为 PA 人决定不投票。在这种情况下,投票的人数是 P - A。假设您需要 W 票才能获胜。

你得到了数量 a = A / Pw = W / P。您的目标是用 aw 而不是 AWP.

来表达 x = W / (P - A)

从一些替换开始:

x = w * P / (P - a * P)

你可以除掉P得到

x = w / (1 - a)