java中的random问题,麻烦各位达人详细回答,谢谢
答案:4 悬赏:20 手机版
解决时间 2021-08-15 11:14
- 提问者网友:泪痣哥哥
- 2021-08-14 22:48
请问Random rand=new Random(47)是什么意思?47代表什么?麻烦各位达人详细回答,谢谢
最佳答案
- 五星知识达人网友:话散在刀尖上
- 2021-08-14 23:48
这是java中的Random类,random类有一个无参数构造器,和有参数。这里是有参数的,Random是随机生成数字,47只是它的起源数字。能懂吗!
全部回答
- 1楼网友:忘川信使
- 2021-08-15 03:26
应该是0-47之间随即取值吧
- 2楼网友:思契十里
- 2021-08-15 02:45
这是一个构造函数,也就是创建了一个 Random类的对象 rand,你可以去查一下API,它提供了一些方法,你可以用这个对象去调用它实现的方法。47就是传进去的参数 47是int型,根据AIP中nextInt(int n) 返回类型为int型 ,返回一个伪随机数,它是从此随机数生成器的序列中取出的、在 0(包括)和指定值(不包括)之间均匀分布的 int值。
详细的解释如下:
nextIntpublic int nextInt(int n)- 返回一个伪随机数,它是从此随机数生成器的序列中取出的、在 0(包括)和指定值(不包括)之间均匀分布的 int值。nextInt 的常规协定是伪随机地生成并返回指定范围中的一个 int 值。所有 n 个可能 int 值的生成概率(大致)相同。Random 类按如下方式实现 nextInt(int n) 方法: public int nextInt(int n) { if (n<=0) throw new IllegalArgumentException("n must be positive"); if ((n & -n) == n) // i.e., n is a power of 2 return (int)((n * (long)next(31)) >> 31); int bits, val; do { bits = next(31); val = bits % n; } while(bits - val + (n-1) < 0); return val; }
前面的描述中使用了不明确的词“大致”,只是因为 next 方法大致为一个单独选择位的公正来源。如果它是一个随机选择位的最佳来源,那么给出的算法应该从起始范围开始完全一致地选择 int 值。
但此算法稍微有些复杂。它拒绝那些会导致不均匀分布的值(由于 2^31 无法被 n 整除)。某个值被拒绝的概率取决于 n。最坏的情况是 n=2^30+1,拒绝的概率是 1/2,循环终止前的预计迭代次数是 2。
此算法特别对待 n 是 2 次幂的情况:它从基础的伪随机数生成器中返回正确的高位数。在不是特殊处理的情况中,将返回正确的低 位数。众所周知,线性同余伪随机数生成器(比如此类所实现的)在其低位的值序列中有 short periods。因此,如果 n 是 2 次幂(幂值较小),则这种特殊情况会导致对此方法的后续调用会返回其长度大大增加的值序列。
- 参数:
- n - 所返回随机数的范围。必须为正数。
- 返回:
- 一个伪随机数,处于 0(包括)和 n(包括)之间均匀分布的 int 值。
- 抛出:
- IllegalArgumentException - n 不是正数。
- 3楼网友:时间的尘埃
- 2021-08-15 01:23
随机生成成了47 个数字!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯