字符串列表中的随机字符串

时间:2012-08-16 18:11:53

标签: perl awk

我有一个字符串列表,我想随机从该列表中获取字符串。你有没有人可以用perl或awk帮助我。

字符串列表:

John
Peter
Adam
Mike
Charlie
Sanders
William
...

输出:

Peter
Mike
Sanders
...

4 个答案:

答案 0 :(得分:3)

我假设你在文件中有这些名字。

use File::Slurp qw(read_file);
use List::Util qw(shuffle);
print for (shuffle read_file 'the_input_file_name' )[0..499];

答案 1 :(得分:2)

List::Util模块提供shuffle运算符。它也是一个核心模块,因此不需要安装

use strict;
use warnings;

use List::Util 'shuffle';

open my $fh, '<', 'string_list.txt' or die $!;
my @names = <$fh>;

print for (shuffle @names)[0..499];

答案 2 :(得分:1)

使用您的文字创建一个文件,每行都有一个新单词。然后运行此脚本以从列表中选择一个选定的数字(下面的示例显示为5)。

#!/usr/bin/perl -l

sub random_words {
$random_items = $_[0];

open(DB, 'random-words.db');
@words = <DB>;
close DB;

    for ($i=0; $i < $random_items; $i++) {
        $random_index = int(rand(@words));
        $random_word = $words[$random_index];
        $random_word =~ s/\R//g;
        print $random_word;
    }
}

random_words(5);

答案 3 :(得分:0)

print splice(@a,rand(@a),1),"\n" while @a;

其中@a我们的列表g.e. 我的@a = qw / 约翰 彼得 亚当 麦克风 查理 桑德斯 威廉 /;