Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Bash] Tirer un nombre aléatoir compris entre 0 et $max

Anonyme
18 mars 2009 à 14:36:24

Salut!
Je voudrais trouver un moyen pour tirer un nombre au hasard entre 0 et un autre nombre.
En fait je fais un script qui dit une phrase au hasard dans un fichier texte donc:
1)je detecte le nombre de lignes que je mets dans une variable:
max=$(wc -l fichier_citations | sed 's/ fichier_citations//g')

J'obtiens 11 par example...
2)Je tire un nombre aléatoire entre 0 et $max (11 dans ce cas... )
J'obtiens... 5 par example... que je met dans la variable $ligne
3)Je dit la 5ème:
sed -n ''$ligne'p' fichier_citations

Et ça dit ma 5ème ligne!

Mais pour que ça marche il faudrait générer $ligne au hasard tel que $ligne <= $max

Si quelqu'un à une solution,merçi d'avance :)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
18 mars 2009 à 14:47:11

Merçi mais ça m'aide pas beaucoup...
  • Partager sur Facebook
  • Partager sur Twitter
18 mars 2009 à 14:50:24

T'a déjà tout lu ? :p

edit: j'ai rien dit, fait plutot man bash (je pensait que la commande précédente te renverrai dessus mais en fait non)
Mais bon quand on fait du bash on fait man bash.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
18 mars 2009 à 15:09:54

Ok merçi, je vais lire tout ça...
à l'année prochaine :):D:)
EDIT:J'ai trouvé ça:
RANDOM        Each time this parameter is referenced, a random integer between
              0 and 32767 is generated.  The sequence of random numbers may be
              initialized by assigning a value to RANDOM.  If RANDOM is unset,
              it  loses  its  special  properties,  even if it is subsequently
              reset.

C'est un début... je continue à lire...
EDIT2:J'ai essayé ça mais ça peut durer longtemps o_O
while [ "$ligne" > "$max" ]
do
     ligne=$RANDOM
done
echo $ligne


EDIT3:eurêka!
Voilà:
#!/bin/bash
max=$(wc -l fichier_citations | sed 's/ fichier_citations//g')
nbmax=$max+1
ligne=$((RANDOM%$nbmax+0))
sed -n ''$ligne'p' fichier_citations
exit 0

skami@ubuntu:~/Dev/Bash/Pingouin_Parleur$ bash essay.sh
essay2
skami@ubuntu:~/Dev/Bash/Pingouin_Parleur$ bash essay.sh
essay15
skami@ubuntu:~/Dev/Bash/Pingouin_Parleur$ bash essay.sh
essay8

Comme on peut le voir, ça lit une ligne au hasard :-)
  • Partager sur Facebook
  • Partager sur Twitter
30 avril 2024 à 15:39:03

quelqun aurait le code en entier ? 

  • Partager sur Facebook
  • Partager sur Twitter
30 avril 2024 à 17:48:37

@pumpyann Bonsoir, merci de ne pas squatter le sujet des autres, créer votre propre sujet dans le respect des règles du forum à savoir qu'un message commence par des règles de politesses (Un bonjour ou des salutations à la communauté et se termine par des remerciements par avances pour les futures réponses), la description de votre problème et le code que vous avez écrit inséré sur le forum à l'aide de l'outil d'intégration de code soit le bouton code </>

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Liens conseillés

  • Partager sur Facebook
  • Partager sur Twitter