看板 Perl 關於我們 聯絡資訊
※ 引述《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)