所定の3つの数字の中から乱数を選択する変数を持つことはできますか?
サンプル:
var= 10 or 100 or 1000
答え1
配列を使用して値を保持し、組み込み変数を使用してその中から選択します$RANDOM
。例えば、
x[0]=10 # One decade
x[1]=100 # One century
x[2]=1000 # One millennium
for ((i=1; i < 20; ++i)); do echo -n " ${x[$RANDOM%3]}"; done; echo
1000 10 10 10 10 100 10 100 100 10 10 100 100 100 10 1000 1000 1000 10
ランダム性の質は最高ではありませんが(バイトを読む/dev/urandom
)、スクリプトには十分です。
注1:x=(10 100 1000)
人々がコメントで観察したように、配列要素を個別に初期化する代わりに配列リテラルを使用することはもちろん可能です。
ノート2:配列内の要素数をハードコーディングする代わりに、任意の要素を抽出できます${x[$RANDOM%${#x[@]}]}
。
答え2
使用する場合強く打つ(または扱いにくいまたはクッシュ 93) 次のようにできます。
echo "$((10**($RANDOM%3+1)))"
または
var=$((10**($RANDOM%3+1)))
それを割り当てる変わりやすい
答え3
答え4
これはやや不思議な方法です。
printf -v var '1%0*d' $(( RANDOM % 3 + 1 )) 0
$var
必要に応じて任意の値が割り当てられます。書式printf
文字列は次のとおりです。1%0Nd
- これにより、前にゼロが0
表示され、間隔にランダムな整数が表示されます。N
N
[1,3]