2016-05-11 28 views
0

我正在嘗試編寫awk腳本,生成總計爲60的3個自然數。我嘗試使用rand函數,但是我得到的總和爲60的問題如何使用awk生成總和爲60的3個自然數

+1

生成2張隨機數,並計算第三酮,爲(60 - 數字1 - 數字2) –

+0

@Lashane蘭特()生成浮點,所以這可能是一個問題。 Tomasz,你可以生成3個隨機浮點數,除以它們的總和並乘以60,你會得到3個總和爲60的數字。然後圍繞它們(檢查上/下來補償) – hyst329

回答

0

這裏有一種方法:

awk -v n=60 'BEGIN{srand();a=int(rand()*n);b=int(rand()*(n-a));c=n-a-b; 
      print a,b,c}' 

思路是:

  • 產生隨機數a0=<a<60
  • 產生RA ndom號b0=<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 
+0

謝謝,這就是我需要 – Tomasz

+0

但是這在概率分佈方面並不那麼好。 – hyst329