如何随机打乱某组数据,并按任意键显示?-[结帖]

如何随机打乱某组数据,并按任意键显示?-[结帖]

根据员工ID和姓名,如:
001     张三
002     李四
003     王五
...     ...
...     ...

想用perl做一个简单的抽签系统。
要求:
1.按任意键(或者只局限于ENTER键)显示某组数据,如:
002     李四
2.被抽到过的人,本轮中不再参加抽签,只到本轮抽签完成,参加下一轮抽签(即:每位员工都有机会被抽到)

我的思路是:先将上面的每组数据随机打乱,然后显示。
问题:
1.如何随机打乱?
2.ENTER键显示如何做?
请您指教,谢谢!

兄弟们,看帖子要回阿!^_^
用$|
抽签可以用rand产生号码
兄弟们,帖子不能沉阿!
我问了两个问题,请专家分别给个思路,周1太忙?呵呵!
What/where is your test code?

For example, using ID as hash's key, if the rang of IDs from 001-1000,
simply use int ( rand (1000)) to generate the ID and get its user record
and mark this record as selected.
It's very simple.

-- ulmer


QUOTE:
原帖由 windows.li 于 2007-12-10 09:44 发表
根据员工ID和姓名,如:
001     张三
002     李四
003     王五
...     ...
...     ...

想用perl做一个简单的抽签系统。
要求:
1.按任意键(或者只局限于ENTER键)显示某组数据,如:
002      ...

1. 会生成随机数吗?
2. 回车只需要<STDIN>即可. 按任意键继续... 参考前几天的2个贴子.
#!/usr/bin/perl

my $key=int(rand 5)+1;
my %hash=(
   001=>'张三',
   002=>'李四',
   003=>'王五',
   004=>'刘六',
   005=>'陈七',
);
print "$key===$hash{$key}\n";

-------------------------------------------
如上,如何过滤掉被选中的($key,$value)?即:每一轮抽签,每个用户有且仅有1次被抽中,直到本轮抽签结束(即,每个人在一轮中都会被抽中,只是顺序问题)。请大家指教,最好帮把这个语句写下来以供偶参考,谢谢!
my %hash=(
   '001'=>'张三',
   '002'=>'李四',
   '003'=>'王五',
   '004'=>'刘六',
   '005'=>'陈七',
);
while(!0){
    print "Plz ENTER enter key to continue!\nEnter 'exit' to exit the programme\n";
    chomp(my $str=<STDIN>);
    exit if $str=~/exit/i;
    my $key=int(rand(5))+1;
    my $out="00$key";
    print "------------->$hash{$out}","\n";
}
回楼上的朋友:

QUOTE:
my %hash=(
   '001'=>'张三',
   '002'=>'李四',
   '003'=>'王五',
   '004'=>'刘六',
   '005'=>'陈七',
);
while(!0){
    print "Plz ENTER enter key to continue!\nEnter 'exit' to exit the programme\n";
    chomp(my $str=<STDIN>);
    exit if $str=~/exit/i;
    my $key=int(rand(5))+1;
    my $out="00$key";
    print "------------->$hash{$out}","\n";
}

---------------------------------
这里没有解决这个问题:

如何过滤掉被选中的($key,$value)?即:每一轮抽签,每个用户有且仅有1次被抽中,直到本轮抽签结束(即,每个人在一轮中都会被抽中,只是顺序问题)。当抽第6次的时候,则进入第二轮抽签,当抽到第11回的时候即是第3个轮回...
-------请您继续指教!