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 :

  • 150 supports d’information online, proposés par la pharma

    L’industrie pharmaceutique semble bien avoir pris le virage du digital. En témoignent les nombreuses réalisations qui s’affichent sur le web et sur nos mobiles... Lire la suite

    Le 28 octobre 2014 par   Fabricevezin
    INTERNET, SANTÉ, WEB2.0
  • Oplan, l'aplication

    Au sommaire : Qu'est ce que Oplan ? Personnalisation de l'application Utilisation très facile Toujours plus de services pour vous Notre avis Par ces temp... Lire la suite

    Le 05 novembre 2014 par   Pressmyweb
    INFORMATIQUE, INTERNET, MÉDIAS, MOBILES, SORTIR
  • [Sélection] 10 cartes de visite au design utile et original pour la rentrée

    Toujours à l'affût des dernières tendances et innovations, le Collectif Digitives vous offre sa sélection des dix meilleures cartes de visite au design et forma... Lire la suite

    Le 30 septembre 2014 par   Digitives
    EBUSINESS, EMARKETING, INSOLITE, INTERNET, MÉDIAS, WEB2.0
  • Le côté obscur du hashtag

    Vous en avez mangé des quantités astronomiques jusqu’en juillet dernier. Vos amis aussi. Vous vous êtes gavé comme un chancre, à toutes les sauces, de... Lire la suite

    Le 16 septembre 2014 par   Tendancescom
    INTERNET, MÉDIAS
  • Clichés insolites avec les noms de gares SNCF

    C’est une première ! Janol Alpin et la SNCF s’associent pour une opération qui s’inspire du nom des gares SNCF de banlieue pour en... Lire la suite

    Le 23 septembre 2014 par   Chasseurbuzz
    INSOLITE, INTERNET, WEB2.0
  • Les 10 déguisements les plus ridicules pour Halloween

    Halloween est à nos portes et chacun cherche à impressionner avec le meilleur des déguisements. Si certains respectent la tradition en optant pou... Lire la suite

    Le 16 septembre 2014 par   Chasseurbuzz
    INSOLITE, INTERNET, MARKETING & PUBLICITÉ, MÉDIAS, WEB2.0
  • Textos parents et enfants drôles et insolites!

    Avec les écrans tactiles et les réseaux 3G accessibles à tous, envoyer des textos est devenu un acte courant et banal! Et ce ne sont pas que les jeunes qui s’y... Lire la suite

    Le 09 octobre 2014 par   Chasseurbuzz
    INSOLITE, INTERNET, MARKETING & PUBLICITÉ, MÉDIAS, WEB2.0

Ajouter un commentaire

A propos de l’auteur


Lb01 15 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