如何对Perl数组中生成的10个随机数进行取整?
解决Perl生成无小数随机数的问题
没问题!在Perl里要把rand()生成的小数转成无小数的整数,有几种实用的方法,完全可以根据你想要的整数范围和取整规则来选:
1. 截断小数取整数(最常用)
int()函数会直接砍掉浮点数的小数部分,只保留整数部分。如果你想要生成0到N-1之间的整数,可以直接给rand()传参数N,再用int()取整:
# 生成10个0到9之间的整数 my @randoms = map { int(rand(10)) } (1..10);
要是你需要1到N之间的整数,只需要在结果上加1就行:
# 生成10个1到100之间的整数 my @randoms = map { int(rand(100)) + 1 } (1..10);
2. 四舍五入取整数
如果需要按照四舍五入规则得到整数,可以用Perl的POSIX模块里的round()函数,或者用sprintf格式化输出:
方法一:使用POSIX::round
use POSIX qw(round); # 生成10个四舍五入后的0到9之间的整数 my @randoms = map { round(rand(10)) } (1..10);
方法二:使用sprintf
# 同样实现四舍五入取整 my @randoms = map { sprintf("%.0f", rand(10)) } (1..10);
小提示
原来的代码map { rand } (1..10)生成的是0到1之间的浮点数,直接用int()取整的话结果全是0,所以一定要给rand()传入你想要的范围上限,才能生成有意义的整数随机数哦~
内容的提问来源于stack exchange,提问作者user9639111
相关产品推荐
相关产品推荐

