我怎样才能在 awk 中随机。在 bash 中是:
echo $((RANDOM%(32-12+1)+12))
awk 中是否有函数可以给出相同的结果?
答案1
是的,它叫 rand(),手册状态:
rand()
返回一个介于 0 和 1 之间的随机数 N,并且 0 ≤ N < 1。
不过,要小心以下警告:
警告:在大多数 awk 实现中(包括 gawk),rand() 每次运行 awk 时都会从相同的起始数字或种子开始生成数字。因此,每次运行程序时都会生成相同的结果。在一次 awk 运行中,数字是随机的,但每次运行都是可预测的。这便于调试,但如果您希望程序每次使用时都执行不同的操作,则必须将种子更改为每次运行都不同的值。为此,请使用 srand()。
手册中再次指出:
srand([表达式])
使用 expr 作为随机数生成器的新种子。如果未提供 expr,则使用当天的时间。返回值是随机数生成器的先前种子。
编辑:
为了回答您的问题,上面的第二个链接几乎提供了您的查询的解决方案。您可以将其修改为:
function randint(n,m)
{
return int(n+ (n-m) * rand())
}