ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Golang获取随机float64(正数)数据与随机int数据(可以是负数)

2022-09-02 17:33:12  阅读:220  来源: 互联网

标签:return min int max float64 ret 随机


package utils

import (
    "fmt"
    "github.com/shopspring/decimal"
    "math"
    "math/rand"
    "testing"
    "time"
)

func init() {
    // 初始化rand模块的Seed,要不然所有的随机值会一样~
    rand.Seed(time.Now().UnixNano())
}

// 获取随机float64 保留2位小数 Notice 不四舍五入
func GetRandomFloat64WHW(min, max float64) float64 {
    min, max = math.Abs(min), math.Abs(max)
    min, max = GetMinFloat64WHW(min, max), GetMaxFloat64WHW(min, max)
    // 到这里确保 max>=min 并且二者一定是正数
    ret := GetMinFloat64WHW(min, max) + rand.Float64()*(max-min)
    // 不四舍五入
    ret, _ = decimal.NewFromFloat(ret).RoundFloor(2).Float64()
    if ret > max {
        ret = max
    }
    if ret < min {
        ret = min
    }
    return ret
}

func GetMaxFloat64WHW(min, max float64) float64 {
    if min >= max {
        return min
    }
    return max
}

func GetMinFloat64WHW(min, max float64) float64 {
    if min <= max {
        return min
    }
    return max
}


func TestRandFloat64222(t *testing.T) {

    fmt.Println(GetRandomFloat64WHW(1,2))
    fmt.Println(GetRandomFloat64(-1.2233,2.123))
    fmt.Println(GetRandomFloat64(3.2,2))
    fmt.Println(GetRandomFloat64(0.01,0.1))
    fmt.Println(GetRandomFloat64(-0.01,0.1))

}

~~~

// 随机数
// 生成min与max之间的整数(包含)
func GenRandomInt(min, max int) int {
    if min == max {
        return min
    }
    // 为了保险取两个值之间大的那个作为max
    randNum := rand.Intn(GetMaxInt(min, max)-min) + min
    return randNum
}

func GetMaxInt(min, max int) int {
    if max >= min {
        return max
    }
    return min
}

func GetMinInt(min, max int) int {
    if min <= max {
        return min
    }
    return max
}

~~~

标签:return,min,int,max,float64,ret,随机
来源: https://www.cnblogs.com/paulwhw/p/16650659.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有