これは、あなたが望むものであるかもしれません。 'a'と '-aを組み合わせた乱数を生成し、それぞれの数の半分を文字列中のaの数を文字列中の-aの数とする。私が質問を誤解したかどうか教えてください。文字列の最大長を制限することができ これは
# l represents half the length of the array
l=1; # Sets l to 1, set the following while statement evaluates true
# Sets l to $RANDOM until it is an even number
while [ $((l % 2)) -ne 0 ]; do
l=$RANDOM;
done;
echo $l;
# Sets m and n to l
n=$l; # n is the number of 'a's
m=$l; # m is the number of '-a's
# Initialises result as an empty string
result="";
# Doesn't stop until both 'a's and '-a's have been exhausted, i.e. n and m both equal 0
while [ "$n" != "0" ] && [ "$m" != "0" ]; do
# Decides between 'a' and '-a'
i=$(($RANDOM % 2));
# Evaluates true if $i is 0, and the number of '-a's has not been exhausted, however also evaluates true if the number of '-a's has been exhausted
if ([ "$i" == "0" ] && [ "$n" != "0" ]) || [ "$m" == "0" ]; then
# Appends 'a' to result
result="$result a";
# Decrement the amount of 'a's left
n=$((n-1));
# Evaluates true if $i is 1, and the number of 'a's has not been exhausted, however also evaluates true if the number of 'a's has been exhausted
elif ([ "$i" == "1" ] && [ "$m" != "0" ]) || [ "$n" == "0" ]; then
# Appends '-a' to result
result="$result -a";
# Decrements the amount of '-a's left
m=$((m-1));
fi;
done;
# Prints the result
echo $result;
EDITを必要とする場合、教えてください:それはそれは予測可能だ場合本当にランダムではありませんSaintHax
によって提案されたコードにコメントが追加されました。 – tripleee
あなたの状態はそれ以上ランダムにならないでしょう。 – Jens
あなたは、 'a'の_n_番号に対して、' -a'の_n_番号があるべきだと言っているので、合計はゼロですが、 'ランダムに'順序づけされるべきですか? –