Files
rands/ints.go
Jim Myhrberg 16bd3ea3b9 feat(deps)!: upgrade to Go 1.17 and golanci-lint 1.64 (#5)
Upgrade to Go 1.17 and golangci-lint to 1.64, and fix the linting issues
that were found.

Also upgrade CI workflow actions to latest versions, and setup a test
matrix for relevant Go versions.

BREAKING CHANGE: Minimum Go version changed from 1.15 to 1.17.
2025-02-28 00:42:28 +00:00

38 lines
663 B
Go

package rands
import (
"crypto/rand"
"fmt"
"math/big"
)
var ErrInvalidMaxInt = fmt.Errorf("%w: max cannot be less than 1", Err)
// Int generates a random int ranging between 0 and nMax.
func Int(nMax int) (int, error) {
if nMax < 1 {
return 0, ErrInvalidMaxInt
}
r, err := rand.Int(rand.Reader, big.NewInt(int64(nMax)))
if err != nil {
return 0, err
}
return int(r.Int64()), nil
}
// Int64 generates a random int64 ranging between 0 and nMax.
func Int64(nMax int64) (int64, error) {
if nMax < 1 {
return 0, ErrInvalidMaxInt
}
r, err := rand.Int(rand.Reader, big.NewInt(nMax))
if err != nil {
return 0, err
}
return r.Int64(), nil
}