gpt4 book ai didi

perl - 如何在 Perl 中以随机顺序打印 STDIN 中的行?

转载 作者:行者123 更新时间:2023-12-01 04:55:13 24 4
gpt4 key购买 nike

我想做 sort(1) 的倒数: 随机化 的每一行标准输入 标准输出 在 Perl 中。

最佳答案

我敢打赌,真正的 Perl 黑客会撕毁它,但它仍然存在。

use strict;
use warnings;
use List::Util 'shuffle';

my @lines = ();
my $bufsize = 512;
while(<STDIN>) {
push @lines, $_;
if (@lines == $bufsize) {
print shuffle(@lines);
undef @lines;
}
}
print shuffle(@lines);

此解决方案与其他解决方案之间的区别:
  • 不会消耗所有输入然后将其随机化(内存占用),但会随机化每个 $bufsize 行(与其他选项相比,不是真正随机且慢得像狗)。
  • 使用一个返回新列表的模块,而不是就地编辑 Fisher - Yates 实现。它们是可互换的(除非您必须将打印与随机播放分开)。有关更多信息,请在您的 shell 上键入 perldoc -q rand。
  • 关于perl - 如何在 Perl 中以随机顺序打印 STDIN 中的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/286640/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com