首页 > 其他分享 >Golang获取随机float64(正数)数据与随机int数据(可以是负数)

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

时间:2022-09-02 17:35:50浏览次数:63  
标签: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,随机
From: https://www.cnblogs.com/paulwhw/p/16650659.html

相关文章

  • selenium元素定位---ElementClickInterceptedException(元素点击交互异常)解决方法
    1、异常原因在编写ui自动化时,执行报错元素无法点击:ElementClickInterceptedException具体报错:selenium.common.exceptions.ElementClickInterceptedException:Message:......
  • Painting Game (博弈论)
    题目:  VirtualJudge(vjudge.net)题目大意:2个人轮流对长条方格填黑,黑的地方不能够相邻.一个人要尽量填黑,一个人要尽量不填黑,当不能填的时候就结束题解思路:......
  • MSSQL 随机数+指定字符串截取
    declare@User_CodeVnvarchar(500),@User_Pwdnvarchar(500),@User_Namenvarchar(500),@RndIdn......
  • Coverpoint:覆盖点
    Coverpoint和与coverpoint关联的bin完成所有工作。覆盖点的语法如下图所示。“covergroupg1”在(posedgeclk)采样。“oc”是覆盖点名称(或标签)。这是仿真日志引用......
  • STM32CubeIDE和ITM SWV实现printf调试信息的打印
    STM32CubeIDE+ITMSWV实现printf调试信息的打印STM32开发时,使用printf函数来打印信息是一种方便的调试方法。不需要像使用断点来中断程序运行即可方便地查看想要的信息......
  • CF1720E. Misha and Paintings
    题意给出n*n的矩阵,ai,j∈[1,n*n],现在要矩形覆盖若干次,每次把一个正方形的ai,j改为x,求最少的次数使得最后有k种不同的数n<=500题解设sum为初始不同的数,若sum<k则显然只......
  • 关于 Math.random()生成指定范围内的随机数的公式推导
    关于Math.random()生成指定范围内的随机数的公式推导在java中,用于生成随机数的Math方法random()只能生成0-1之间的随机数,而对于生成指定区间,例如a-b之间的随机......
  • paper - 2004 - self intersection removal in triangular mesh offseting
    paper-2004-selfintersectionremovalintriangularmeshoffsetingJungW,ShinH,ChoiBK.Self-intersectionremovalintriangularmeshoffsetting[J].Com......
  • [面试]HandlerInterceptors vs. Filters in Spring MVC
    一.Filters过滤器是web服务器的一部分,而不是Spring框架的一部分。对于传入的请求,我们可以使用过滤器来操作甚至阻止请求到达任何的servlet。反之亦然,我们也可以阻止响应......
  • 随机生成常用
    //生成随机姓名functiongetName(){varfamilyNames=newArray("赵","钱","孙","李","周","吴","郑","王","冯","陈","......