Je sais que je peux utiliser seq
pour générer une liste aléatoire de nombres: 1, 2, 3, 4 ...
Je veux obtenir ces nombres dans un ordre aléatoire comme 3, 1, 4, 2 ...
Je sais que je peux utiliser shuf
pour mélanger les lignes d'un fichier. Je pourrais donc utiliser seq
pour écrire des nombres aléatoires dans un fichier, puis shuf
pour les mélanger - ou pour écrire une sorte de fonction de lecture aléatoire. Mais cela semble inutilement complexe. Existe-t-il un moyen plus simple de randomiser les éléments d'un tableau avec une seule commande?
command-line
seq
bernie2436
la source
la source
echo $(seq 10 | shuf)
se rapproche mais ne fait pas les virgules.paste
...paste
ne savais pas ça. Merci de m'avoir appris. Ayez un vote positif.join
etpaste
. Ces 2 outils sont extrêmement puissants.En supposant que vous ayez un tableau d'entiers décimaux:
Vous pouvez utiliser
printf
etshuf
pour randomiser les éléments du tableau:(ce qui précède suppose que vous n'avez pas modifié
$IFS
).Si vous n'avez besoin que de nombres aléatoires entre deux entiers, disons
10
et20
, vous n'avez pas besoin de processus supplémentaires autrement qu'enshuf
utilisant l'-i
option:Citant de
man shuf
:la source
shuf --help
mais j'ai essayé d'utilisershuf -i 1 10
sans intervenir-dash.
oh bien, bon travail - ayez mon vote positif.Vous n'avez même pas besoin d'une
for
boucle.PRODUCTION
Pour les placer dans un tableau shell, vous devez:
PRODUCTION
Et puis ils sont dans votre tableau shell.
Si vous les obtenez dans le tableau shell, vous n'avez même pas besoin
printf
:PRODUCTION
Soit dit en passant,
seq
etprintf
sont un peu faits l'un pour l'autre. Par exemple, si je veux répéter une chaîne 1000 fois?PRODUCTION
... 999
a string
lignes plus tard ...Ou...
PRODUCTION
Je veux exécuter une commande 39 fois?
PRODUCTION
... 38
run
lignes plus tard ...la source
Vous pouvez utiliser la
shuf
commande pour randomiser la sortie, par exemplela source
POSIX, pour générer une liste mélangée des entiers décimaux de
min
àmax
:Gardez à l'esprit qu'avec de nombreuses implémentations awk, l'exécution de cette commande deux fois dans la même seconde produira le même résultat (en tant que
srand()
générateur du générateur pseudo-aléatoire en fonction de l'heure actuelle).la source