package main
import (
"crypto/rand"
"fmt"
"math/big"
"strings"
)
// Generate a random integer in [0, max)
func randomInt(max int64) int64 {
n, _ := rand.Int(rand.Reader, big.NewInt(max))
return n.Int64()
}
// Generate a random string of given length
func generateRandomString(length int) string {
const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
var sb strings.Builder
sb.Grow(length)
for i := 0; i < length; i++ {
idx := randomInt(int64(len(charset)))
sb.WriteByte(charset[idx])
}
return sb.String()
}
// Generate a random date
func generateRandomDate() string {
year := 2000 + randomInt(21) // 2000–2020
month := 1 + randomInt(12) // 1–12
day := 1 + randomInt(28) // 1–28
return fmt.Sprintf("%04d-%02d-%02d", year, month, day)
}
// Generate a random file size
func generateRandomFileSize() int64 {
return 1 + randomInt(100000) // 1–100000 bytes
}
func main() {
extensions := []string{".txt", ".jpg", ".png", ".cpp", ".pdf"}
numberOfFiles := 10
fileLength := 9
for i := 0; i < numberOfFiles; i++ {
fileName := generateRandomString(fileLength)
extension := extensions[randomInt(int64(len(extensions)))]
date := generateRandomDate()
fileSize := generateRandomFileSize()
fmt.Printf("%s%s %s %d bytes\n", fileName, extension, date, fileSize)
}
}
/*
run:
k4Sg2ica6.png 2010-10-10 71145 bytes
U8Hi7ICwj.png 2003-12-28 16447 bytes
vNfPYzuI9.txt 2007-04-28 77029 bytes
wkc6jy7h7.jpg 2013-08-18 44492 bytes
mI0rLiCSh.pdf 2006-12-18 88282 bytes
RI0ODHyrT.pdf 2017-03-03 21178 bytes
Oy4Gi8SkO.txt 2001-03-11 61983 bytes
9xEgcQiJM.png 2016-09-07 37712 bytes
3iAH8w9Mb.txt 2001-12-04 46002 bytes
pO8VCSG5I.jpg 2012-05-28 28702 bytes
*/