这个问题是在一次采访中给我的.采访已经结束了,但我仍然在考虑问题和它的烦恼:
您可以包含以下工具语言:一个rand()功能,while而for循环,if语句和readline()方法(类似于Python的readline()).给定这些工具,编写一个在文件中返回随机行的算法.您不知道文件的大小,并且您只能循环文件的内容一次.
我不知道所需的答案,但我的解决方案如下:
chosen_line = ""
lines = 0
while (current_line = readline()):
if (rand(0, lines) == 0):
chosen_line = current_line
lines++
return chosen_line
Run Code Online (Sandbox Code Playgroud)
编辑:这个评论中发布了一个很好的解释.