算法题

262 阅读1分钟

题目

题目: 随机返回字典中的一个key,并保证返回这个key的概率和它所对应的value成正比。 假设 key 为 str 类型,value 为 int 或者 float 类型。 例如:

dd = {
       'a': 2,
       'b': 3,
       'c': 5,
     }

解法一

这个是我第一次做出的答案,整体上有点麻烦。

解法二

如果值限定了是 int 类型的话,可以尝试:

解法三

解法三与解法二类似,也是限定值必须是 int 类型: 这种看上去更加简洁:

解法四

解法四与解法一的思路接近,是一种求累计值与随机概率对应的方法。 但是限定于 value 是 int 的情况。

解法五

还可以算出每个的概率,然后在100 个中去生成原来的key,再去random.choice() 这 100 个key。