Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 流中的字符_File_Stream - Fatal编程技术网

File 流中的字符

File 流中的字符,file,stream,File,Stream,这个问题是在一次采访中提出的 假设您的计算机正在从流中逐个读取字符,您在结束之前不知道流的长度。请注意,您只有一个字符的存储空间,因此无法将您读取的字符保存到类似于strong的文件中。读完后,应该以相同的概率从流中返回一个字符 如何解决这个问题??有什么想法吗 有什么办法可以解决这个问题吗?这是你知道或不知道的技巧之一: 取第一个字符,概率1/2取下一个,否则保留第一个,概率1/3取下一个,否则保留,以此类推 它之所以有效,是因为每次选择概率为1/n的第n个字符,或者保留概率为1/n-1的前一

这个问题是在一次采访中提出的

假设您的计算机正在从流中逐个读取字符,您在结束之前不知道流的长度。请注意,您只有一个字符的存储空间,因此无法将您读取的字符保存到类似于strong的文件中。读完后,应该以相同的概率从流中返回一个字符

如何解决这个问题??有什么想法吗


有什么办法可以解决这个问题吗?

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

取第一个字符,概率1/2取下一个,否则保留第一个,概率1/3取下一个,否则保留,以此类推


它之所以有效,是因为每次选择概率为1/n的第n个字符,或者保留概率为1/n-1的前一个字符,概率为1-n/n,而1-n字符则被取消。

只是为了挑剔:n存储在哪里-@Andre Holzner您甚至可以更加挑剔,询问如何生成一个随机数而不占用任何存储空间,或者如何访问流而不需要存储空间来引用或指向流对象的指针。@Andre Holzner更严肃地说,除了对流和随机数生成器的char和函数调用的内存之外,该方法还需要存储表示获取或保留概率的单个double。它可以更新为p=1/1/p+1。