Shell

如何生成逗號分隔的隨機整數列表

  • April 3, 2021

我正在嘗試生成一個逗號分隔的 1 到 10 之間的整數的無序列表,我嘗試了以下方法,但它產生了一個有序列表:

seq -s "," 10 | shuf

您可以使用paste -s連接線:

shuf -i1-10 | paste -sd, -

這使用-ishuf 選項來指定正整數的範圍。

的輸出seq可以通過管道傳輸到 shuf:

seq 10 | shuf | paste -sd, -

或者-e改組參數:

shuf -e {1..10} | paste -sd, -

1 到 10 之間的數字列表有兩種,你需要哪一種?

解釋它們的最好方法是使用類比:

  1. 將編號為 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. 將編號為 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

引用自:https://unix.stackexchange.com/questions/643226