golang--生成某區間的隨機數


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()
	}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM