这取决于你的randbits价值:
rand调用系统的随机数生成器(或者编译到Perl副本中的任何一个).对于这个讨论,我将调用生成器RAND来区分它与rand,Perl的功能.RAND产生一个从0到2**randbits - 1的整数,其中randbits是一个小整数.要查看perl中的内容,请使用命令'perl -V:randbits'.常用值为15,16或31.
当您使用参数arg调用rand时,perl将该值作为整数并计算此值.
Run Code Online (Sandbox Code Playgroud)arg * RAND rand(arg) = --------------- 2**randbits该值将始终落在所需的范围内.
Run Code Online (Sandbox Code Playgroud)0 <= rand(arg) < arg但是,随着arg与2**randbits相比变大,事情变得有问题.让我们想象一个randbits = 15的机器,所以RAND的范围是0..32767.也就是说,每当我们调用RAND时,我们得到32768个可能的值之一.因此,当我们调用rand(arg)时,我们得到32768个可能的值之一.