import (
	"crypto/rand"
	"fmt"
	"math"
	"math/big"
)
 
func main() {
	// 生成 1000 个 [-10, 10) 范围的安全随机数。
	for i := 0; i < 1000; i++ {
		ret := RangeRand(-10, 10)
		fmt.Println(ret)
	}
}
 
// 生成区间[-m, n]的安全随机数
func RangeRand(min, max int64) int64 {
	if min > max {
		panic("the min is greater than max!")
	}
 
	if min < 0 {
		f64Min := math.Abs(float64(min))
		i64Min := int64(f64Min)
		result, _ := rand.Int(rand.Reader, big.NewInt(max + 1 + i64Min))
 
		return result.Int64() - i64Min
	} else {
		result, _ := rand.Int(rand.Reader, big.NewInt(max-min+1))
		return min + result.Int64()
	}

  

相关文章:

  • 2022-02-24
  • 2022-12-23
  • 2022-12-23
  • 2021-09-19
  • 2021-07-29
  • 2022-12-23
  • 2021-10-24
  • 2022-12-23
猜你喜欢
  • 2021-06-29
  • 2022-12-23
  • 2022-12-23
  • 2022-01-12
  • 2021-08-17
  • 2021-08-28
相关资源
相似解决方案