package main
import (
"fmt"
"math"
"math/rand"
"time"
)
func generateNDigitNumber(n int) int64 {
if n < 1 {
panic("n must be a positive integer (>= 1).")
}
// Seed once per program run
rand.Seed(time.Now().UnixNano())
var lowerBound int64
if n > 1 {
lowerBound = int64(math.Pow(10, float64(n - 1)))
} else {
lowerBound = 0
}
upperBound := int64(math.Pow(10, float64(n))) - 1
rangeSize := upperBound - lowerBound + 1
r := rand.Int63n(rangeSize) + lowerBound
return r
}
func main() {
fmt.Println(generateNDigitNumber(1))
fmt.Println(generateNDigitNumber(4))
fmt.Println(generateNDigitNumber(10))
}
/*
run:
3
9586
2327728138
*/