Bonjour 
Les poids sont-ils des nombres entiers naturels ? Si oui, il suffit répéter le mot un nombre de fois égal au poids, et tirer de façon equiprobable un mot.
Exemple:
Maman 6
va 2
au 1
marché 5
Cette liste devient :
Maman
Maman
Maman
Maman
Maman
Maman
va
va
au
marché
marché
marché
marché
marché
On tire un nombre entre 1 et 14 : 11
Le mot à la onzième place est "marché".
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| $ cat <<eof >fichier.txt
> Maman 6
> va 2
> au 1
> marché 5
> eof
$ awk '{for (i=1;i<=$2;i++) print $1;}' fichier.txt
Maman
Maman
Maman
Maman
Maman
Maman
va
va
au
marché
marché
marché
marché
marché
$ awk '{for (i=1;i<=$2;i++) print $1;}' fichier.txt | sort -R | head -1
Maman
$ awk '{for (i=1;i<=$2;i++) print $1;}' fichier.txt | sort -R | head -1
marché
$ awk '{for (i=1;i<=$2;i++) print $1;}' fichier.txt | sort -R | head -1
au
$ awk '{for (i=1;i<=$2;i++) print $1;}' fichier.txt | sort -R | head -1
marché
$ awk '{for (i=1;i<=$2;i++) print $1;}' fichier.txt | sort -R | head -1
va
$ awk '{for (i=1;i<=$2;i++) print $1;}' fichier.txt | sort -R | head -1
marché |
Partager