1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-01-11 19:18:14 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
leetcode-problemset/算法题(国内版)/problem (Chinese)/按权重生成随机数 [cuyjEf].html

63 lines
2.4 KiB
HTML
Raw Normal View History

2022-03-27 20:38:29 +08:00
<p>给定一个正整数数组&nbsp;<code>w</code> ,其中&nbsp;<code>w[i]</code>&nbsp;代表下标 <code>i</code>&nbsp;的权重(下标从 <code>0</code> 开始),请写一个函数&nbsp;<code>pickIndex</code>&nbsp;,它可以随机地获取下标 <code>i</code>,选取下标 <code>i</code>&nbsp;的概率与&nbsp;<code>w[i]</code>&nbsp;成正比。</p>
<ol>
</ol>
<p>例如,对于 <code>w = [1, 3]</code>,挑选下标 <code>0</code> 的概率为 <code>1 / (1 + 3)&nbsp;= 0.25</code> 25%),而选取下标 <code>1</code> 的概率为 <code>3 / (1 + 3)&nbsp;= 0.75</code>75%)。</p>
<p>也就是说,选取下标 <code>i</code> 的概率为 <code>w[i] / sum(w)</code></p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre>
<strong>输入:</strong>
inputs = [&quot;Solution&quot;,&quot;pickIndex&quot;]
inputs = [[[1]],[]]
<strong>输出:</strong>
[null,0]
<strong>解释:</strong>
Solution solution = new Solution([1]);
solution.pickIndex(); // 返回 0因为数组中只有一个元素所以唯一的选择是返回下标 0。</pre>
<p><strong>示例 2</strong></p>
<pre>
<strong>输入:</strong>
inputs = [&quot;Solution&quot;,&quot;pickIndex&quot;,&quot;pickIndex&quot;,&quot;pickIndex&quot;,&quot;pickIndex&quot;,&quot;pickIndex&quot;]
inputs = [[[1,3]],[],[],[],[],[]]
<strong>输出:</strong>
[null,1,1,1,1,0]
<strong>解释:</strong>
Solution solution = new Solution([1, 3]);
solution.pickIndex(); // 返回 1返回下标 1返回该下标概率为 3/4 。
solution.pickIndex(); // 返回 1
solution.pickIndex(); // 返回 1
solution.pickIndex(); // 返回 1
solution.pickIndex(); // 返回 0返回下标 0返回该下标概率为 1/4 。
由于这是一个随机问题,允许多个答案,因此下列输出都可以被认为是正确的:
[null,1,1,1,1,0]
[null,1,1,1,1,1]
[null,1,1,1,0,0]
[null,1,1,1,0,1]
[null,1,0,1,0,0]
......
诸若此类。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= w.length &lt;= 10000</code></li>
<li><code>1 &lt;= w[i] &lt;= 10^5</code></li>
<li><code>pickIndex</code>&nbsp;将被调用不超过&nbsp;<code>10000</code>&nbsp;</li>
</ul>
<p>&nbsp;</p>
<p><meta charset="UTF-8" />注意:本题与主站 528&nbsp;题相同:&nbsp;<a href="https://leetcode-cn.com/problems/random-pick-with-weight/">https://leetcode-cn.com/problems/random-pick-with-weight/</a></p>