作者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
推 ForeverT:感謝你 RTESL 的同學 但我有些地方不明白 再請教 03/25 13:29
→ ForeverT:print $_." ".int(($_-$btm)/($f1))."\n"; 這行 03/25 13:30
→ ForeverT:的 ." ". 和最後 \n前的 . 是什麼意思? 03/25 13:31
→ ForeverT:如果要 產生到小數點第三位的亂數且每0.005 一個級距 03/25 13:34
推 ForeverT:又要如何寫呢? 例如12.475 13.020 (0.005的倍數) 03/25 13:37
→ ForeverT:先謝謝你了 好心的高手 03/25 13:37
→ deh3215:亂入要取小數點後幾位,用sprintf "%.2f",$num 取到小數後2 03/25 17:12
※ 編輯: jlovet 來自: 140.123.216.204 (03/26 03:25)