如何使用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
我正在尝试编写生成 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