[問題] 亂數產生數值,需要到小數點第二位.

看板C_and_CPP作者 (Terry)時間13年前 (2012/03/07 04:00), 編輯推噓1(1011)
留言12則, 4人參與, 最新討論串1/3 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 問題(Question): 請教各位前輩們 我需要輸入一個數值的區間,然後百分之80產生較小的數值,其它百分之20是較長的數值。 例如: [10,20],要產生10個亂數 產生的結果可能會是這個樣子. 10 20 10 10 10 10 10 10 10 19 10比較小所以有80%產生的機率,其它11~20有百分之20產生的機率。 以[10,20]這個區間為例 我的做法是 先計算這個區間有幾個數值: 20-10+1 = 11,所以計算後這個區間有11個數值 然後11*0.8(80%),就是百分之80的機率會產生較小的數值。 剩下的就是較長的數值。 但是,如果想要亂數產生較小數值的機率要到小數點第二位 應該如何做呢? 例如:百分之82(82%)(0.82)的機率會產生較小的數值。 我的方法好只能取到百分比整數而已 希望前輩們能給予一些想法,如何才能亂數產生數值的機率到小數點第二位。 謝謝幫忙。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.107.207 ※ 編輯: bernachom 來自: 114.42.107.207 (03/07 04:01)

03/07 04:11, , 1F
除以100不就變成小數了?
03/07 04:11, 1F

03/07 04:11, , 2F
這樣能符合你的要求嗎?
03/07 04:11, 2F

03/07 04:12, , 3F
請教一下,是什麼地方除以100呢? 謝謝您
03/07 04:12, 3F

03/07 08:15, , 4F
小數點左移兩位...看你程式那邊可以就加在那邊啊...
03/07 08:15, 4F

03/07 08:28, , 5F
有個簡單但是可能沒啥效率的方法:
03/07 08:28, 5F

03/07 08:34, , 6F

03/07 08:38, , 7F
只要改變arr裡0跟1的數量就可以改變機率了XD
03/07 08:38, 7F

03/07 09:13, , 8F
我比較覺得大家是因為看不懂你的方法才不知道要你怎麼改進..
03/07 09:13, 8F

03/07 09:14, , 9F
那個 *0.8 真的完全不知道是在做什麼...
03/07 09:14, 9F

03/07 12:25, , 10F
那個0.8是百分之80,所以要乘上0.8
03/07 12:25, 10F

03/07 12:25, , 11F
我晚一點來修文,謝謝幫忙
03/07 12:25, 11F

03/07 12:38, , 12F
謝謝J大的幫忙,我晚點研究一下,謝謝
03/07 12:38, 12F
※ 編輯: bernachom 來自: 114.42.107.207 (03/07 16:53)
文章代碼(AID): #1FLcpajT (C_and_CPP)
文章代碼(AID): #1FLcpajT (C_and_CPP)