Magazine Internet

Générer un nombre aléatoire compris entre deux valeurs en Bash

Publié le 29 novembre 2009 par Lb01

Générer un nombre aléatoire compris entre deux valeurs en Bash

Voici un petit bout de code bien pratique qui vous permet de générer un nombre aléatoire compris entre deux valeurs choisies.

Nous verrons aussi un exemple pratique d’utilisation avec la génération d’une date de naissance aléatoire !

Tout d’abord, voici le code en version longue qui va générer un nombre aléatoire compris entre 100 et 200 :

min=100
max=200
number=$[($RANDOM % ($[$max - $min] + 1)) + $min]
echo $number

Il peut aussi être écrit en version courte :

echo $[($RANDOM % ($[200 - 100] + 1)) + 100]

Voilà ! Rien de bien compliqué ici : la fonction $RANDOM native de BASH va générer un nombre pseudo aléatoire entre 0 et 32767 qui va ensuite être modifié par des opérations mathématiques pour donner notre nombre aléatoire !

Génération d’une date de naissance aléatoire

Voyons maintenant comment générer une date de naissance aléatoire grâce à notre petite formule.

Commençons par le plus facile, l’année et le mois. Il suffit de reprendre la formule présentée ci-dessus et d’y modifier les valeurs minimales et maximales :

yearMin=1900
yearMax=2008
year=$[($RANDOM % ($[$yearMax - $yearMin] + 1)) + $yearMin]
month=$[($RANDOM % ($[12 - 1] + 1)) + 1]

Et pour le jour alors ?

C’est déjà un peu plus compliqué, il faut connaître le dernier jour du mois (pour le max de notre formule) et il peut-être le 31, le 30, le 29 ou même le 28 !

Heureusement que, étant des lecteurs assidus de Tavuu.net, vous avez lu le dernier article intitulé « Trouver le dernier jour d’un mois en bash !« .

Il nous suffit donc de reprendre la formule présentée dans cet article et de l’adapter à notre code (tiens, c’est drôle, les variables correspondent déjà :-°) :

lastMonthDay=$(date -d "$year-$month-01 +1 month -1 day" +%d)

Il ne nous reste plus qu’à générer notre jour aléatoire :

day=$[($RANDOM % ($[$lastMonthDay - 1] + 1)) + 1]

Vous pouvez ensuite afficher votre date comme bon vous semble :

echo "$day/$month/$year"

Code final

Ce qui nous donne au final :

yearMin=1900
yearMax=2008
year=$[($RANDOM % ($[$yearMax - $yearMin] + 1)) + $yearMin]
month=$[($RANDOM % ($[12 - 1] + 1)) + 1]
day=$[($RANDOM % ($[$lastMonthDay - 1] + 1)) + 1]
echo "$day/$month/$year"

Source

Similar Posts:

Article original écrit par Leeroy pour T'as vuu ?. | Lien direct vers l'article | Réagir à l'article


Vous pourriez être intéressé par :

Retour à La Une de Logo Paperblog

Ces articles peuvent vous intéresser :

  • L'appli du donneur d'organes est disponible sur iPhone

    Comme chaque année depuis 15 ans, le 22 juin est le moment pour dire à ses proches son choix vis-à-vis du don d’organes, lors de la Journée nationale de... Lire la suite

    Le 22 juin 2015 par   Next51
    HIGH TECH, INTERNET, WEB2.0
  • Comment bien travailler avec un web designer

    Si vous avez déjà lu un billet précédent, vous avez déjà compris l’essentiel. Le web designer n’est pas là pour rendre sexy votre site web. Sa... Lire la suite

    Le 25 août 2015 par   Choblab
    EMARKETING, INTERNET, WEB2.0
  • Les 5 règles non-écrites de Facebook

    Les 5 règles non-écrites de Facebook Par Mélissa Lévesque Facebook… quel outil merveilleux qui empoisonne nos vies. Personnellement, je suis une grande fan de... Lire la suite

    Le 23 juin 2015 par   Lamallette
    CÔTÉ FEMMES, HIGH TECH, INFORMATIQUE, INTERNET, WEB2.0
  • Critères de choix pour son hébergement web

    L’hébergement d’un site web est l’élément le plus important au bon fonctionnement de ce dernier car cela peut avoir un impact en terme de... Lire la suite

    Le 20 août 2015 par   Aolivier
    EMARKETING, INTERNET, MÉDIAS, WEB2.0
  • Whyd, ouvre grand tes oreilles

    Pour commencer cette dernière semaine d’août et pour reprendre une activité normale sur le blog, on a voulu te présenter un réseau social tout en musique :... Lire la suite

    Le 24 août 2015 par   Touteouie
    CULTURE, INTERNET, MUSIQUE, WEB2.0
  • Mèmes sur le diabète – Rire pour évoquer la maladie

    Nous sommes des millions de diabétiques en France et ailleurs. Presque proportionnellement, beaucoup se sont confrontés à des questions sans réponse, à de... Lire la suite

    Le 06 juillet 2015 par   Neodandy
    CINÉMA, CONSO, CULTURE, HIGH TECH, INTERNET, JEUX VIDÉO, WEB2.0
  • Les Trophées des Blogueuses

    Ma crème de la crème La semaine dernière, j'ai reçu un petit trophée de la part de Laura du blog Fanacosmétiques au travers du Tag qu'elle a invité, Les... Lire la suite

    Le 08 juillet 2015 par   Cécilia
    BEAUTÉ , BLOG, CÔTÉ FEMMES, INTERNET, MODE FEMME, STYLISME

Ajouter un commentaire

A propos de l’auteur


Lb01 19 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Magazines