【发布时间】:2019-04-22 14:37:20
【问题描述】:
我正在处理以下面试问题:
如果给您一份国家/地区及其相应人口的列表, 编写一个函数,它将返回一个随机国家,但越高 该国的人口越多,就越有可能在 随机的。
我想出了以下逻辑:
对列表进行两次遍历。在第一次遍历中,总结所有 每个位置的人口,以获得总人口 TOTAL_POP。在 第二次迭代,计算每个位置人口的百分比 反对 TOTAL_POP。例如,如果位置 A 有人口“a”。 A 的人口百分比为 (a/TOTAL_POP)*100。
假设,在这些步骤之后,我们有以下值。位置 A = 35% B = 22% C = 19% D = 20% E = 4%
请注意,百分比之和应为 100。
现在,随机生成一个介于 1 到 100 之间的数字“n”。
如果 1
有没有更好的方法来解决这个问题?算法或代码什么都可以。另外,如果我们要在 Java 中实现它,那么在这里使用的最佳数据结构是什么?
【问题讨论】:
-
这很好。它是对具有指定概率的离散集进行采样的标准方法之一。一个简单的列表(按范围排序)就足够了(进行二进制搜索以找到国家/地区)。
-
为什么你应该坚持 1
-
实数四舍五入到相同的整数值呢?那你会选择哪个国家呢?那么人口
标签: java algorithm data-structures