作者jlovet (打不赢怪兵器不好)
看板Perl
标题Re: [请益] 一堆乱数 如何分群组
时间Wed Mar 25 07:47:39 2009
※ 引述《ForeverT (全家好神)》之铭言:
: 我有一堆10~20的乱数 例如
: 12 15 16 18 17 19 11 13 14 15
: 我需要将这些数字分成群组 而分成几群由程式外使用者定义
: 例如分成4个群组的话 (20-10)/4=2.5 一个range
: 群组一就是10~12.5的数 11 12
: 群组二就是12.6~15的数 13 14 15 15
: 群组三就是15.1~17.5的数 16 17
: 群组四就是17.6~20的数 18 19
: 如果分几个群组是固定的 我写得出来(目前写分4个群组)
: 用4个if 或elsif
: 但是如果分几群 不固定 由程式外使用者定义
: 我就写不出来了
: 所以来这请教高手
: 希望能分 2个群组 到 10个群组 不定
: 先谢谢解的出的高手了
我觉得你这样分有点怪
10应该要自己一组...不然就要额外判断...
#!/usr/bin/perl
$i=10; #产生几个随机变数
$btm=10; #底
$top=20; #顶
for($j=0;$j<$i;$j++){
push @stack,$btm+int(rand($top-$btm+1));
}
print "Enter an integer:";
$f=<STDIN>;
chomp($f); #切成几份
$f1=($top-$btm)/$f; #范围/几份=每份多大
print $f1."\n";
foreach(@stack){
print $_." ".int(($_-$btm)/($f1))."\n";
#减去底之後,去除看看他是在第几份的范围,int=取floor
}
2.5
13 1
14 1
16 2
14 1
12 0
14 1
15 2 //像这样,15跟13会是不同组的喔...
13 1
20 4
16 2
12 0
10 0
20 4
16 2
18 3
15 2
10 0
14 1
17 2
10 0
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.123.102.254
1F:推 ForeverT:感谢你 RTESL 的同学 但我有些地方不明白 再请教 03/25 13:29
2F:→ ForeverT:print $_." ".int(($_-$btm)/($f1))."\n"; 这行 03/25 13:30
3F:→ ForeverT:的 ." ". 和最後 \n前的 . 是什麽意思? 03/25 13:31
4F:→ ForeverT:如果要 产生到小数点第三位的乱数且每0.005 一个级距 03/25 13:34
5F:推 ForeverT:又要如何写呢? 例如12.475 13.020 (0.005的倍数) 03/25 13:37
6F:→ ForeverT:先谢谢你了 好心的高手 03/25 13:37
7F:→ deh3215:乱入要取小数点後几位,用sprintf "%.2f",$num 取到小数後2 03/25 17:12
※ 编辑: jlovet 来自: 140.123.216.204 (03/26 03:25)