GNU/Linux >> Tutoriels Linux >  >> Linux

Comment une séquence de dates aléatoires peut-elle être générée, compte tenu de l'intervalle annuel ?

Ce qu'il faut ici, c'est une commande qui génère six dates sur une plage d'années (1987 à 2017). Par exemple :

12/10/1987
30/04/1998
22/02/2014
17/08/2017
19/07/2011
14/05/2004

Comment cela pourrait être fait, avec sed , gawk , etc ?

Réponse acceptée :

Vous pouvez transformer le problème en générant un nombre aléatoire entre un nombre représentant la première date possible et un nombre représentant la dernière date possible (en fait celle juste après la dernière possible), au format d'époque Unix. Tout le reste est géré par des conversions de date standard. gawk a une meilleure résolution de nombres aléatoires que bash (float vs entier 15 bits), donc j'utiliserai gawk . Notez que le rand() le résultat N est un flottant tel que 0 <=N <1, c'est pourquoi la limite supérieure est augmentée en dessous, c'est une limite qui ne peut pas être roulée. Il y a un 3ème paramètre facultatif pour le nombre de résultats.

#!/usr/bin/gawk -f
BEGIN {
    first=mktime(ARGV[1] " 01 01 00 00 00")
    last=mktime(ARGV[2]+1 " 01 01 00 00 00")
    if (ARGC == 4) { num=ARGV[3] } else { num=1 }
    ARGC=1
    range=last-first
    srand(sprintf("%d%06d", systime(), PROCINFO["pid"]))
    for (i=1; i <= num; i++) {
        print strftime("%d/%m/%Y", range*rand()+first)
    }
}   

Par exemple :

./randomdate.gawk 1987 2017 6
26/04/1992
28/04/2010
21/04/2005
17/02/2010
06/10/2016
04/04/1998

Linux
  1. Comment augmenter la limite du nombre de fichiers ouverts sous Linux

  2. Comment compter le nombre de fichiers et de sous-répertoires dans un répertoire donné

  3. Comment installer pandom :un vrai générateur de nombres aléatoires pour Linux

  4. Nombre de fichiers contenant une chaîne donnée ?

  5. Comment imprimer un numéro en assembleur NASM ?

Comment vérifier l'historique des commandes Linux par dates

Comment vérifier le numéro de version et le nom de code de Linux Mint

Comment envoyer un ping à un numéro de port sous Linux

Comment envoyer un ping à un numéro de port spécifique

Comment faire un tracé graphique d'une séquence de nombres à partir de l'entrée standard ?

Comment :Introduction à la programmation - Programmation orientée objet