擅长:python、mysql、java
<p>代码的主要问题是,您试图将列表与布尔值进行比较,因为<code>random.choice()</code>函数返回一个列表</p>
<p>因此,<strong>首先</strong>您必须获取<code>success</code>列表的第一个元素:</p>
<pre><code>success = random.choices(arrive, weights=(100 - (q * 100), q * 100), k=1)
if success[0]:
passengers += 1
</code></pre>
<p>或</p>
<pre><code>success = random.choices(arrive, weights=(100 - (q * 100), q * 100), k=1)[0]
if success:
passengers += 1
</code></pre>
<br/>
<hr/>
<p>第二件要记住的事,也许是最重要的一件事,就是你总是会得到0%的回报,这是因为逻辑发展的方式,统计上几乎不可能没有人不出现,只有一个人不出现,在案例a中,在超售中不会有人</p>
<br/>
<p><strong>示例</strong></p>
<p>我做了一些测试,修改了一个人不出现的概率百分比</p>
<p>我想提到的是{<cd3>}是一种{<cd4>}概率,在这种情况下非常高,这意味着在100人中,每次模拟的平均结果是30人,这就是为什么从来没有超额预订的人</p>
<p>除了<code>0.0%</code>之外,我得到的第一个结果是设置<code>q = 0.05</code>,因此我收到了<code>0.007</code>的超售概率(即<code>0.7%</code>)</p>
<hr/>
<p><strong>平面B</strong></p>
<p>我不会给你写模拟B公司案例的解决方案,它是修改一行代码,你最好这样做,因为这是一个任务。然而,我也为第二个案例做了一些测试,这里的情况在统计学上变得更加有趣</p>
<p>通过设置一个<code>q = 0.4</code>,我们得到的平均超售概率为<code>0.97</code>(<code>97%</code>),平均超售概率为<code>q = 0.5</code>(<code>0.45</code>)</p>