作者JACK19920102 ()
看板MATLAB
標題[討論] randi 超過上限 該如何處理
時間Thu Sep 22 16:05:06 2016
我需要在 0到20!
或0到30! 甚至0到50!
之間隨機生成一個正整數
但是randi()函數 括弧裡面 最多不可超過2^53
階層最大只能求到
randi(factorial(18)) = 5.4416e+14
randi(factorial(19)) 就超出randi的範圍了( 19! > 2^53 )
請問這有辦法解決嗎??
感謝大家回答 前五個推文的id各送100p幣 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.54.67
※ 文章網址: https://webptt.com/m.aspx?n=bbs/MATLAB/M.1474531511.A.F9A.html
※ 編輯: JACK19920102 (140.114.54.67), 09/22/2016 16:06:11
1F:推 sunev: randi(10,1,ceil(gammaln(51)/log(10)))-1 09/22 16:52
2F:→ JACK19920102: s大 我試著用這個語法 但是寫出來的好像不是耶 09/26 15:37
3F:→ JACK19920102: 還是我用錯了? 不太知道該怎麼用這個語法 09/26 15:44
4F:→ JACK19920102: 如果是20!階層的話呢? 09/26 16:42
5F:→ sunev: 好像? 09/26 20:50
6F:→ celestialgod: 不能在0到log(20!)之間取一個隨機數 在轉回去取 10/03 02:10
7F:→ celestialgod: ceiling嗎 10/03 02:10
8F:→ celestialgod: 或是floor, round之類都好,保證是正數就好 10/03 02:11
9F:→ celestialgod: 如果下界是1話,取ceiling,下界是0取floor 10/03 02:11
10F:→ celestialgod: 這樣做好像機率會有問題Orz 10/03 02:12
11F:推 sunev: 搞不好人家要研究benford's law啊 10/03 12:28