Re: [請益] 一堆亂數 如何分群組

看板Perl作者 (打不贏怪兵器不好)時間16年前 (2009/03/25 07:47), 編輯推噓2(205)
留言7則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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

03/25 13:29, , 1F
感謝你 RTESL 的同學 但我有些地方不明白 再請教
03/25 13:29, 1F

03/25 13:30, , 2F
print $_." ".int(($_-$btm)/($f1))."\n"; 這行
03/25 13:30, 2F

03/25 13:31, , 3F
的 ." ". 和最後 \n前的 . 是什麼意思?
03/25 13:31, 3F

03/25 13:34, , 4F
如果要 產生到小數點第三位的亂數且每0.005 一個級距
03/25 13:34, 4F

03/25 13:37, , 5F
又要如何寫呢? 例如12.475 13.020 (0.005的倍數)
03/25 13:37, 5F

03/25 13:37, , 6F
先謝謝你了 好心的高手
03/25 13:37, 6F

03/25 17:12, , 7F
亂入要取小數點後幾位,用sprintf "%.2f",$num 取到小數後2
03/25 17:12, 7F
※ 編輯: jlovet 來自: 140.123.216.204 (03/26 03:25)
文章代碼(AID): #19oN4Tuf (Perl)
討論串 (同標題文章)
文章代碼(AID): #19oN4Tuf (Perl)