[討論] randi 超過上限 該如何處理 (送p幣)

作者: JACK19920102   2016-09-22 16:05:06
我需要在 0到20!
或0到30! 甚至0到50!
之間隨機生成一個正整數
但是randi()函數 括弧裡面 最多不可超過2^53
階層最大只能求到
randi(factorial(18)) = 5.4416e+14
randi(factorial(19)) 就超出randi的範圍了( 19! > 2^53 )
請問這有辦法解決嗎??
感謝大家回答 前五個推文的id各送100p幣 謝謝
作者: sunev (Veritas)   2016-09-22 16:52:00
randi(10,1,ceil(gammaln(51)/log(10)))-1
作者: JACK19920102   2016-09-26 15:37:00
s大 我試著用這個語法 但是寫出來的好像不是耶還是我用錯了? 不太知道該怎麼用這個語法如果是20!階層的話呢?
作者: sunev (Veritas)   2016-09-26 20:50:00
好像?
作者: celestialgod (天)   2016-10-03 02:10:00
不能在0到log(20!)之間取一個隨機數 在轉回去取ceiling嗎或是floor, round之類都好,保證是正數就好如果下界是1話,取ceiling,下界是0取floor這樣做好像機率會有問題Orz
作者: sunev (Veritas)   2016-10-03 12:28:00
搞不好人家要研究benford's law啊

Links booklink

Contact Us: admin [ a t ] ucptt.com