作者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/cn.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