GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Urutan Tanggal Acak Dihasilkan, Mengingat Interval Tahun?

Yang diperlukan di sini adalah perintah yang menghasilkan enam tanggal dengan rentang tahun (1987 hingga 2017). Misalnya:

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

Bagaimana itu bisa dilakukan, dengan sed , gawk , dll?

Jawaban yang Diterima:

Anda dapat mengubah masalah menjadi menghasilkan angka acak antara angka yang mewakili tanggal pertama yang mungkin dan angka yang mewakili tanggal terakhir yang mungkin (sebenarnya yang tepat setelah kemungkinan terakhir), dalam format zaman unix. Segala sesuatu yang lain ditangani oleh konversi tanggal standar. gawk memiliki resolusi angka acak yang lebih baik daripada bash (float vs 15 bit integer), jadi saya akan menggunakan gawk . Perhatikan bahwa rand() hasil N adalah float sedemikian rupa sehingga 0 <=N <1, makanya batas yang lebih tinggi dinaikkan ke bawah, itu adalah batas yang tidak dapat digulirkan. Ada parameter ke-3 opsional untuk jumlah hasil.

#!/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)
    }
}   

Misalnya:

./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. Cara Meningkatkan Jumlah Batas File Terbuka di Linux

  2. Cara menginstal pandom:generator angka acak yang benar untuk Linux

  3. Bagaimana cara mencetak nomor di perakitan NASM?

  1. Cara Menghitung Jumlah File dan Subdirektori di dalam Direktori yang Diberikan

  2. Cara membuat kata sandi acak di linux menggunakan /dev/random

  3. Jumlah File yang Mengandung String yang Diberikan?

  1. Bash printf - Cara Mencetak Variabel di Bash

  2. Cara Menghitung Kemunculan Kata dalam File Teks

  3. linux:cara menjalankan perintah di direktori tertentu