如何使用awk生成3个总和为60的自然数

How to generate 3 natural number that sum to 60 using awk

我正在尝试编写生成 3 个总和为 60 的自然数的 awk 脚本。我正在尝试使用 rand 函数,但总和为 60 时遇到问题

这是一种方法:

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