这个问题在接受采访时被问到了。
假设您的计算机从流中逐个读取字符(在结束之前您不知道流的长度)。请注意,您只有一个存储空间字符(因此您无法将已读取的字符保存为强大的字符)。当你读完之后,你应该以相同的概率从流中返回一个字符。
如何解决这个问题?任何想法?
任何解决这个问题的方法吗?
答案 0 :(得分:5)
这是你知道或不知道的技巧之一:
取第一个角色,概率1/2取下一个角色,否则保留第一个角色,概率1/3取下一个,否则保持等等。
它的工作原理是因为每次你选择 1 概率 1 / n ,或保留前一个(概率 1 /( n-1)在那里,概率(1-n)/ n , 1-n 取消。