[讨论] 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