How to generate an N-digit integer random number in Go

1 Answer

0 votes
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

*/

 



answered Nov 27, 2025 by avibootz
...