根据热点选国家

热度加权随机选择算法
题目:
     有一个待选国家的列表,以及国家的相对热门程度,请给出一个算法,随机选择一个国家,并且保证,越是热门的国家,随机选择它的可能性就越高。

分析:
    

每当我们遇到一个题目的时候,都要对题目进行充分的理解,有哪些条件,目标是什么。这个题目看完之后,我们能够得到两个要点:

  • 随机选择一个国家
  • 越是热门,选择的可能性、概率就越高

我们怎么做到这个呢?如何充分理解这个呢?还是通过一个例子来进行:

国家 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的数字,即可。
  • 当国家数以及热度都是不固定时,则需要蓄水池抽样算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值