为什么 AWK 中的随机数在第一次运行后不会改变?

为什么 AWK 中的随机数在第一次运行后不会改变?

我正在学习大王,为什么我第二次使用以下命令时数字总是相同的?

首次运行:

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()

相关内容