我正在学习大王,为什么我第二次使用以下命令时数字总是相同的?
首次运行:
awk 'BEGIN{for(i=1;i<=10;i++) print int(101*rand())}'
24
29
85
15
59
19
81
17
48
15
第二次运行:
awk 'BEGIN{for(i=1;i<=10;i++) print int(101*rand())}'
24
29
85
15
59
19
81
17
48
15
答案1
从https://www.gnu.org/software/gawk/manual/html_node/Numeric-Functions.html
警告:在大多数 awk 实现中,包括 gawk,
rand()
每次运行 awk 时,都会从相同的起始数字或种子开始生成数字。因此,每次运行程序时都会生成相同的结果。在一次 awk 运行中,数字是随机的,但每次运行都是可以预测的。这便于调试,但如果您希望程序每次使用时都执行不同的操作,则必须将种子更改为每次运行都不同的值。为此,请使用srand()
。