mirror of
https://github.com/jimeh/rands.git
synced 2026-02-19 11:26:38 +00:00
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.
38 lines
663 B
Go
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
|
|
}
|