流中的字符

dre*_*mer 2 file stream

这个问题在接受采访时被问到了......

假设您的计算机正在从流中逐个读取字符(在结束之前您不知道流的长度).请注意,您只有一个存储空间字符(因此您无法将已读取的字符保存为强大的字符).当你读完之后,你应该以相同的概率从流中返回一个字符.

怎么解决这个问题?任何的想法??

任何方式来解决这个问题?

tru*_*ity 5

这是你知道或不知道的技巧之一:

取第一个字符,概率1/2取下一个字符,否则保留第一个字符,概率1/3取下一个,否则保持等.

它的工作原理是因为每次你以1/n的概率选择第n个字符,或者保持前一个(具有概率1 /(n-1)在那里)概率(1-n)/ n,并且1-n s取消.