Ich versuche, awk Skript zu schreiben, das 3 natürliche Zahlen, die Summe zu 60 generieren. Ich versuche mit Rand-Funktion, aber ich habe ein Problem mit der Summe 60Wie man 3 natürliche Zahl erzeugt, die Summe auf 60 mit awk
0
A
Antwort
0
Hier ist eine Möglichkeit:
awk -v n=60 'BEGIN{srand();a=int(rand()*n);b=int(rand()*(n-a));c=n-a-b;
print a,b,c}'
Idee ist: ra 0=<a<60
- Zufallszahl
a
erzeugen NDOM Nummerb
:0=<b<60-a
c=60-a-b
hier, habe ich eine Variable n=60
, es einfach zu machen, wenn Sie andere Summe haben.
Wenn wir dieses-liner 10-mal ausgeführt werden, erhalten wir Ausgang:
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
2 Zufallszahlen erzeugen und 3. eine als berechnen (60 - number1 - Nummer2) –
@Lashane rand() erzeugt Gleitkomma-, Es könnte also ein Problem sein. Tomasz, du kannst 3 zufällige Floats generieren, alle durch ihre Summe teilen und sie mit 60 multiplizieren, dann bekommst du 3 Zahlen, die auf 60 summieren. Dann um sie herum (nach oben/nach unten suchen) – hyst329