Shell
如何生成逗號分隔的隨機整數列表
我正在嘗試生成一個逗號分隔的 1 到 10 之間的整數的無序列表,我嘗試了以下方法,但它產生了一個有序列表:
seq -s "," 10 | shuf
您可以使用
paste -s
連接線:shuf -i1-10 | paste -sd, -
這使用
-i
shuf 選項來指定正整數的範圍。的輸出
seq
可以通過管道傳輸到 shuf:seq 10 | shuf | paste -sd, -
或者
-e
改組參數:shuf -e {1..10} | paste -sd, -
1 到 10 之間的數字列表有兩種,你需要哪一種?
解釋它們的最好方法是使用類比:
- 將編號為 1 到 10 的 10 個球放入袋中。在每一輪中取出一個球,閱讀號碼,不要將球放回袋子。這會生成一個最多 10 個數字的列表。所有數字都將出現在列表中,但(強制)僅出現一次。
這樣的列表將由類似於以下的命令生成:
$ echo $(seq 10 | shuf) | tr " " "," 10,7,5,2,3,9,1,4,8,6 $ shuf -i1-10 | paste -sd, - 1,9,4,6,2,8,10,5,3,7
- 將編號為 1 到 10 的 10 個球放入袋中。每一輪從袋子裡取出一個球,讀出上面的數字,然後把球放回袋子裡。列表可能是無限的,數字可能需要一段時間才能重複。
可以使用類似於以下的命令生成這樣的列表:
$ shuf -n 20 -r -i1-10 | paste -sd, - 9,9,7,8,2,8,5,5,4,9,8,6,6,6,4,10,6,6,9,7