我正在尝试编写awk脚本,生成3个总和为60的自然数。我正在尝试使用rand函数但是我遇到了总和为60的问题
答案 0 :(得分:0)
这是一种方式:
awk -v n=60 'BEGIN{srand();a=int(rand()*n);b=int(rand()*(n-a));c=n-a-b;
print a,b,c}'
想法是:
a
:0=<a<60
b
:0=<b<60-a
c=60-a-b
在这里,我设置了一个变量n=60
,以便在您有其他总和时轻松实现。
如果我们运行这个单行10次,我们得到输出:
kent$ awk 'BEGIN{srand();for(i=1;i<=10;i++){a=int(rand()*60);b=int(rand()*(60-a));c=60-a-b;print a,b,c}}'
46 7 7
56 1 3
26 15 19
14 12 34
44 6 10
1 36 23
32 1 27
41 0 19
55 1 4
54 1 5