###选择旅游国家
####原题
有一个待选国家的列表,以及国家的相对热门程度,请给出一个算法,随机选择一个国家,并且保证,越是热门的国家,随机选择它的可能性就越高。
####分析
每当我们遇到一个题目的时候,都要对题目进行充分的理解,有哪些条件,目标是什么。这个题目看完之后,我们能够得到两个要点:
- 随机选择一个国家
- 越是热门,选择的可能性、概率就越高
我们怎么做到这个呢?如何充分理解这个呢?还是通过一个例子来进行:
国家 | A | B | C | D |
热度 | 1 | 2 | 5 | 2 |
随机选择一个国家,意味着,如果热度相同,则被选择的概率是相同的,更进一步,都可以表示为2/10。依次类推,A被选择的概率是1/10,热度最小,则概率最小。并且,概率之间的比,和热度之间的比是相同的。
那么,我们以怎么样的方法,来保证,选择A的概率是1/10,B和D的概率是2/10,C的概率是5/10?我们稍作变换,将上面的表格,转换为如下的表格:
A | B | B | C | C | C | C | C | D | D |
我们只要保证,选择上面表格中每一个元素的概率是相同的,就可以得到A,B,C,D的概率值。如何保证呢?两种情况:
- 当国家数以及热度都是固定时,比如上面的总数10,随机0-9的数字,即可。
- 当国家数以及热度都是不固定时,则需要蓄水池抽样算法
蓄水池抽样算法,在我们前面的系列中有介绍,是时候翻开前面的东西,复习一下了。