avatar
大牛快过来做道题# JobHunting - 待字闺中
a*r
1
Random city:
Given cities and their population, write a method that returns a city
randomly weighted by population.
Example: For the following data: [“Seattle:60”, “Spokane:21”, “Olympia:
5”], the method would return ‘Seattle’ most often, and Olympia the least
often.
You are given the following class to work with:
class City {
String name;
int population;
}
You can make use of an API-provided random() method which returns a random
double value [0..1) (zero inclusive; one exclusive), e.g. Math.random()
avatar
z*e
2
?
这题很简单吧?
avatar
a*r
3
米高蜥蜴大牛:
给个code让菜鸟学习学习

【在 z****e 的大作中提到】
: ?
: 这题很简单吧?

avatar
A*i
4
三个数值加起来从里面pickup不就完了么,在哪个range里面就弹哪个
avatar
s*y
5
越界处理呢? 数据太大怎么办

【在 A*****i 的大作中提到】
: 三个数值加起来从里面pickup不就完了么,在哪个range里面就弹哪个
avatar
A*i
6
同比例缩小,用double?

【在 s******y 的大作中提到】
: 越界处理呢? 数据太大怎么办
avatar
z*e
7
BigInteger

【在 A*****i 的大作中提到】
: 同比例缩小,用double?
avatar
a*r
8
蛋疼帝大牛
能不能用题目中的例子给菜鸟具体讲讲
”在哪个range里面就弹哪个“
avatar
A*i
9
三个人口数相加作为随机数的范围,如果随机数出来在1到60之间就选择西雅图,以此
类推

【在 a********r 的大作中提到】
: 蛋疼帝大牛
: 能不能用题目中的例子给菜鸟具体讲讲
: ”在哪个range里面就弹哪个“

avatar
s*y
10
你这个算法理论上来说行得通,如果有1000个城市,每个城市的人口是100k - 10m,那
你这个算法需要优化吧。

【在 A*****i 的大作中提到】
: 三个人口数相加作为随机数的范围,如果随机数出来在1到60之间就选择西雅图,以此
: 类推

avatar
A*i
11
按比例缩小10^n倍然后用double的random来做
或者用赵策说的BigInteger。

【在 s******y 的大作中提到】
: 你这个算法理论上来说行得通,如果有1000个城市,每个城市的人口是100k - 10m,那
: 你这个算法需要优化吧。

avatar
s*y
12
random 出来 你怎么选择城市呢?

【在 A*****i 的大作中提到】
: 按比例缩小10^n倍然后用double的random来做
: 或者用赵策说的BigInteger。

avatar
a*r
13
参照Seattle:60”, “Spokane:21”, “Olympia:5
如果随机出来是4, 选择Seattle 还是选择Olympia?

【在 s******y 的大作中提到】
: random 出来 你怎么选择城市呢?
avatar
l*a
14
seattle (0,60]
Spokane: (60,81]
Olympia (81,86]
落到那个里就是哪个
只有三个的话,不要告诉我你落到87

【在 a********r 的大作中提到】
: 参照Seattle:60”, “Spokane:21”, “Olympia:5
: 如果随机出来是4, 选择Seattle 还是选择Olympia?

avatar
z*e
15
[0,60)

【在 l*****a 的大作中提到】
: seattle (0,60]
: Spokane: (60,81]
: Olympia (81,86]
: 落到那个里就是哪个
: 只有三个的话,不要告诉我你落到87

avatar
a*r
16
长期骑驴,一直找马大牛,
你讲的好清楚,谢谢
这样的话,要先把城市按照人口由多到少排序?

【在 l*****a 的大作中提到】
: seattle (0,60]
: Spokane: (60,81]
: Olympia (81,86]
: 落到那个里就是哪个
: 只有三个的话,不要告诉我你落到87

avatar
A*i
17
不用排序,只要知道每个城市所在的区域就行了,顺序无所谓

【在 a********r 的大作中提到】
: 长期骑驴,一直找马大牛,
: 你讲的好清楚,谢谢
: 这样的话,要先把城市按照人口由多到少排序?

avatar
a*r
18
蛋疼帝大牛:
不排序, 你如何知道Spokane的区域是 (60,81]?

【在 A*****i 的大作中提到】
: 不用排序,只要知道每个城市所在的区域就行了,顺序无所谓
avatar
l*a
19
不就是挨个加吗,不要想得那么复杂

【在 a********r 的大作中提到】
: 蛋疼帝大牛:
: 不排序, 你如何知道Spokane的区域是 (60,81]?

avatar
h*o
20
挨个用人口数/总人口数,位置可以按顺序选。60+21+5=86.
(0,60/86]就第一个城,(60/86, 81/86]第二个,(81/86,1]第三个。 81=60+21
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。