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 :

  • Payez votre Big Mac avec de l’amour (Vidéo)

    Publicité, février 2015 – Une preuve d’amour contre un Big Mac, ça se passe comme ça chez McDonald’s.Cela peut vous paraitre insolite mais c’est la pure vérité. Lire la suite

    Le 04 février 2015 par   Chasseurbuzz
    INTERNET, MARKETING & PUBLICITÉ, MÉDIAS, WEB2.0
  • Le capteur qui retrouve vos objets

    Alors qu'on pensait avoir déjà tout vu en matière de beacons, ces petits capteurs bluetooth utilisés pour retrouver nos objets égarés, Pixie, propose depuis... Lire la suite

    Le 25 février 2015 par   Digitives
    EBUSINESS, EMARKETING, HIGH TECH, INTERNET, MÉDIAS, WEB2.0
  • PharmaSuccess, le congrès incontournable pour la pharma

    Le 19 mars prochain se tiendra la nouvelle édition de PharmaSuccess, le rendez-vous incontournable du Business Excellence et Marketing Santé de l’industrie... Lire la suite

    Le 16 février 2015 par   Fabricevezin
    INTERNET, SANTÉ, WEB2.0
  • Guide d’utilisation des Twitter Ads – La publicité sur Twitter

    La publicité sur Twitter / crédits : adweek.comDepuis quelques semaines, la plateforme de Tweet Ads est ouverte à tous sans minima de budget (Il fallait... Lire la suite

    Le 27 janvier 2015 par   Julienrenault88
    INTERNET, MÉDIAS, WEB2.0
  • Bienvenue à « Zee Town », la ville Facebook

    t; Buzz Facebook et réseaux sociaux, février 2015 – Zee Town, la ville des employés de FacebookFacebook et son patron n’en finissent pas de nous étonner... Lire la suite

    Le 25 février 2015 par   Chasseurbuzz
    INSOLITE, INTERNET, MARKETING & PUBLICITÉ, MÉDIAS, WEB2.0
  • Jouez aux devinettes avec Google

    t; Buzz Google, avril 2015 – Googlinette pour jouer aux devinettes avec GoogleSi vous cherchez ce qui peut passer par la tête d’un internaute au moment où... Lire la suite

    Le 07 avril 2015 par   Chasseurbuzz
    INTERNET, MARKETING & PUBLICITÉ, MÉDIAS, WEB2.0
  • « Il reste encore des enfants à écraser »

    t; Buzz insolite mars 2015 ! Un panneau pour faire lever le pied aux automobilistes…Peut être ce panneau fera-t-il prochainement parti du code de la route ... Lire la suite

    Le 12 mars 2015 par   Chasseurbuzz
    INSOLITE, INTERNET, MARKETING & PUBLICITÉ, MÉDIAS, WEB2.0

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