首页 > 其他分享 >Golang - 获取指定区间范围内随机数

Golang - 获取指定区间范围内随机数

时间:2023-05-23 19:46:10浏览次数:39  
标签:rand min res Golang 获取 int64 随机数 max 10

1. go语言未提供获取指定区间范围内的随机数方法,只有一个参数获取(0, n)的随机数。

2. 可根据此方法获取指定区间随机数,先随机0到(m-n),再用加 n 的方式解决

例:[5, 10], 先生成[0,5], 再加5

package main
 
import (
    "fmt"
    "math/rand"
    "time"
)
 
func main() {
    // 由于go语言未提供2个区间参数,只一个参数的情况下先随机0到(m-n),再用加 n 的方式解决
    // 例:[5, 10], 先生成[0,5], 再加5
 
    // go取随机数需要指定一个随机种子
    // 种子一般使用当前的系统时间,这是完全随机的。
 
    for i := 0; i < 50; i++ {
        // res := getRandomWithAll(5, 10)
        // res := getRandomWithMin(5, 10)
        // res := getRandomWithMax(5, 10)
        res := getRandomWithNo(5, 10)
        fmt.Println(res)
    }
 
}
 
// 包含上下限 [min, max]
func getRandomWithAll(min, max int) int64 {
    rand.Seed(time.Now().UnixNano())
    return int64(rand.Intn(max-min+1) + min)
}
 
// 不包含上限 [min, max)
func getRandomWithMin(min, max int) int64 {
    rand.Seed(time.Now().UnixNano())
    return int64(rand.Intn(max-min) + min)
}
 
// 不包含下限 (min, max]
func getRandomWithMax(min, max int) int64 {
    var res int64
    rand.Seed(time.Now().UnixNano())
Restart:
    res = int64(rand.Intn(max-min+1) + min)
    if res == int64(min) {
        goto Restart
    }
    return res
}
 
// 都不包含 (min, max)
func getRandomWithNo(min, max int) int64 {
    var res int64
    rand.Seed(time.Now().UnixNano())
Restart:
    res = int64(rand.Intn(max-min) + min)
    if res == int64(min) {
        goto Restart
    }
    return res
}

 

标签:rand,min,res,Golang,获取,int64,随机数,max,10
From: https://www.cnblogs.com/beatleC/p/17426180.html

相关文章

  • 注解中动态获取nacos值【attribute value must be constant】
    nacos中配置环境参数env:es:dev注解中添加参数信息@Data@IndexName(value="#{@envEs}")publicclassEsInfo{privateLongid;}添加配置文件获取配置数据@ComponentpublicclassEnvEsConfig{@Value("${env.es}")privateStringenvEs;@Be......
  • 流程控制、循环语句和随机数
    一、流程控制语句流程判断1if[condition];then command commandfi[条件]&&command流程判断2if[condition];then command1else command2fi[条件]&&command1||command2流程判断3if[condition1];then command1结束elif[condition2];......
  • golang context 应用
    packagemainimport( "context" "fmt" "time")funcmain(){ //创建初始上下文 ctx:=context.Background() //派生可取消的上下文 cancelCtx,cancel:=context.WithCancel(ctx) //启动一个Goroutine执行任务 godoTask(cancelCtx) //等待一段时......
  • https部署与docker下nginx的转发+文件获取
    进入nginx容器查看是否有etc/nginx/cert目录将https的域名证书放到cert目录下配置80和443server{#listen80;#侦听80端口listen80;#侦听443端口,用于SSLserver_name127.zyfdtsite.com;client_max_body_size1024m;#charsetkoi8-r;#acc......
  • iOS 获取图像的方式与坑点
    请求图像(这里有巨坑)-requestImageForAsset:targetSize:contentMode:options:resultHandler:你不应该生成该类的实例,而应该使用该类的提供的单例对象。该方法提供指定的尺寸的图像,与ALAssetsLibrary库相比,没有了方便的缩略图提供。不过要吐槽的是,需要注意的是,该方法在默认情况下是......
  • JavaScript正则获取a标签中的path路径值-流程引擎-计算引擎
    直接上代码://获取附件中的链接地址functionget_file_path_from_encode_value(x){vararrLink=[];x.replace(/<a[^>]*path=['"]([^'"]+)[^>]*/gi,function(match,capture){arr......
  • 类加载和通过反射获取类的结构信息
    1. 基本说明  719反射机制是java实现动态语言的关键,也就是通过反射实现类动态加载。1.静态加载:编译时加载相关的类,如果没有写出该类,则报错,依赖性太强2.动态加载:运行时加载需要的类,如果运行时不用该类,即使不存在该类,也不报错,降低了依赖性代码在com.stulzl.class_load_.包中Clas......
  • Js获取当前是本年度第几周、周开始日期结束日期
    js获取今年第几周和获取周的开始和结束日期获取今年第几周周的开始和结束日期 获取今年第几周//页面初始时获取当前是本年第几周functiongetYearWeek(a,b,c){//a为年b为月c为日/*date1是当前日期date2是当年第一天......
  • 获取当前页真实链接
    importrequestsdefrequest_zy(url):response=requests.get(url=url)returnresponse.urlif__name__=='__main__':url='http://www.baidu.com/link?url=N4eynVHBVTmN6ikAQKABNbAhT-YqKIyQYnedOewWz3k3hm341LgiUcWX6Tpw-R2iOqLyf9Ox05OYnrdY......
  • 获取下一个月日期
    publicstaticfinalStringgetNextMonth(StringqueryMonth)throwsParseException{SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM");Calendarcalendar=Calendar.getInstance();//设置为当前时间DateFormatdateFormat=newSimpleDa......