由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问一道Amazon的老题
相关主题
Yodle 面试题 Triangle 答对能有面试机会一定电挂了(G家)
这里人多,请问Java如何读取需要登录的网页的内容明天去G家onsite LC刷了0.8遍
谁能给个Serialization/Deserialization of a Binary Tree Java版完整code?Yelp 面经
请教一道careercup上面的概率题card shuffle的算法我自己都想不出来
career cup 150第五版10.3 中numberOfInts为什么要除以8?电面问题求解答~~
请帮我看下这道coding exercise请教F家和T家最近的一道常见题
请教一道题目random(5) generate random(7)
电话面经(Microsoft, Amazon, Google, ...)一道概率题目
相关话题的讨论汇总
话题: file话题: string
进入JobHunting版参与讨论
1 (共1页)
h**********d
发帖数: 4313
1
Large file, multiple lines, how to get any line in equal probablity. 这题
可以问得很深入,比如文件太大内存无法装入如何办。
有人有内存不够大的做法吗,能不能讲一下,谢谢
g*********s
发帖数: 1782
2
题意不清。什么叫”get any line in equal probablity“?

【在 h**********d 的大作中提到】
: Large file, multiple lines, how to get any line in equal probablity. 这题
: 可以问得很深入,比如文件太大内存无法装入如何办。
: 有人有内存不够大的做法吗,能不能讲一下,谢谢

h**********d
发帖数: 4313
3
就是一个很大的file,不知道有多少行,问你怎么才能random的选其中一行,使得每行
被选的概率相等

【在 g*********s 的大作中提到】
: 题意不清。什么叫”get any line in equal probablity“?
z****u
发帖数: 24
4
我有一个笨方法
拆分这个大文件为很多个小的可以装入内存的文件
一个一个调入内存,计算总的函数,和每个文件对应的行数范围
产生一个随机数 [1, 总行数]
找到对应的文件
找到对应的行
g*********s
发帖数: 1782
5
i think it's just the classical online algorithm to pick up a number in a
infinite stream: 1/2*2/3*3/4... = 1/n.

【在 h**********d 的大作中提到】
: 就是一个很大的file,不知道有多少行,问你怎么才能random的选其中一行,使得每行
: 被选的概率相等

h**********d
发帖数: 4313
6
好吧,这可以算brute force的了,谢谢

【在 z****u 的大作中提到】
: 我有一个笨方法
: 拆分这个大文件为很多个小的可以装入内存的文件
: 一个一个调入内存,计算总的函数,和每个文件对应的行数范围
: 产生一个随机数 [1, 总行数]
: 找到对应的文件
: 找到对应的行

h**********d
发帖数: 4313
7
可以说再详细点吗,thanks

a

【在 g*********s 的大作中提到】
: i think it's just the classical online algorithm to pick up a number in a
: infinite stream: 1/2*2/3*3/4... = 1/n.

j*t
发帖数: 184
h**********d
发帖数: 4313
9
明白了,谢谢
我找到了一个类似题目的解法,是一个file里选10行
public void reservoirSampling () throws FileNotFoundException,
IOException {
File f = new File("data.txt");
BufferedReader br = new BufferedReader(new FileReader(f));
String currentLine;
int reservoirSize=10;
List reservoirList= new ArrayList(reservoirSize);
int count=0;
Random ra = new Random();
int randomNumber;
while ((currentLine = br.readLine()) != null){
count ++;
if (count<=10){
reservoirList.add(currentLine);
}
else {
randomNumber = (int)ra.nextInt(count);
if (randomNumber {
reservoirList.set(randomNumber, currentLine);
}
}
}
}

【在 j*t 的大作中提到】
: Reservoir sampling
: http://en.wikipedia.org/wiki/Reservoir_sampling

1 (共1页)
进入JobHunting版参与讨论
相关主题
一道概率题目career cup 150第五版10.3 中numberOfInts为什么要除以8?
在线等一道面试probability题的答案,谢谢~请帮我看下这道coding exercise
An interview question about probability. (转载)请教一道题目
Pick k lines from a large file randomly uniformly distributed电话面经(Microsoft, Amazon, Google, ...)
Yodle 面试题 Triangle 答对能有面试机会一定电挂了(G家)
这里人多,请问Java如何读取需要登录的网页的内容明天去G家onsite LC刷了0.8遍
谁能给个Serialization/Deserialization of a Binary Tree Java版完整code?Yelp 面经
请教一道careercup上面的概率题card shuffle的算法我自己都想不出来
相关话题的讨论汇总
话题: file话题: string