权重实现随机抽奖

2023-11-20

一般抽奖是怎么实现的?在实习期间学会了一种通用的写法,在这里记录一下。

最近在学Golang语法基础,这里就用Golang来写。

package main

import (
    "fmt"
    "time"
    "math/rand"
)

func main() {
    r := rand.New(rand.NewSource(time.Now().UnixNano()))

    weights  := [9]int{1,2,3,50,7,51,68,54,89}
    var total_weight int
    for i := 0; i < 9; i++ {
        total_weight += weights[i]
    }
    
    println("total_weight = ", total_weight)
    cur_weight := r.Intn(total_weight)
    fmt.Println("cur_weight =",cur_weight)
    for i:=0; i<9; i++ {
        if cur_weight < weights[i] {
            fmt.Println("weight_num =",i)
            break
        }

        cur_weight -= weights[i]
    }
}
这里其实我们是需要知道我们抽到的值落在权重数组的哪个元素里,用图可能形象一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

权重实现随机抽奖 的相关文章

  • 【Golang入门】Golang第一天心得

    生活所迫 入门一下Go 很奇葩的第一点 接口 package main import fmt 定义一个接口 type Shape interface Area float64 定义一个矩形类型 type Rectangle struct W
  • go-zero使用Etcd进行服务注册代码分析

    代码分析 github com tal tech go zero v1 2 3 core discov publisher go package discov import github com tal tech go zero core
  • golang sleep

    golang的休眠可以使用time包中的sleep 函数原型为 func Sleep d Duration 其中的Duration定义为 type Duration int64 Duration的单位为 nanosecond 为了便于使用
  • 权重实现随机抽奖

    一般抽奖是怎么实现的 在实习期间学会了一种通用的写法 在这里记录一下 最近在学Golang语法基础 这里就用Golang来写 package main import fmt time math rand func main r rand N
  • go 进阶 go-zero相关: 七. 拦截器与熔断拦截器

    目录 一 拦截器的基础使用 1 服务端拦截器 2 客户端拦截器 二 拦截器底层底层执行原理 三 go zero默认添加的拦截器 客户端 1 熔断器拦截器 BreakerInterceptor 服务端 一 拦截器的基础使用 在go zero
  • 【golang】error parsing regexp: invalid or unsupported Perl syntax (正则表达式校验密码)

    要在 Go 中编写密码校验规则 确保密码不少于8位且包含数字和字母 你可以使用正则表达式和 Go 的 regexp 包来实现 以下是一个示例代码 错误示范 package main import fmt regexp func valida
  • Go Web编程实战(10)----模板引擎库text/template包的使用

    目录 前言 模板引擎 定义模板文件 解析模板文件 渲染模板 实战使用模板 创建 tmpl文件 创建文件用于解析与渲染模板 前言 在Go语言中 模板引擎库text template包主要用于处理任意格式的文本内容 同时还提供了html tem
  • Go中 Redis Client的使用

    文章目录 常见操作 List 操作 Pipeline 使用 在 Go 语言中使用 Redis 时 可以使用第三方库实现 Redis Client 的封装 本文介绍如何使用 Go 语言的 redisClient 去连接 Redis 服务器 并
  • goland环境配置

    goland modules环境配置 下载和安装goland 环境配置 配置环境变量GOPATH 配置go modules GOPROXY代理的系统变量 工程目录中新建三个工作目录 goland中启用go modules 新建一个go程序
  • Go 语言输出文本函数详解

    Go语言拥有三个用于输出文本的函数 Print Println Printf Print 函数以其默认格式打印其参数 示例 打印 i 和 j 的值 package main import fmt func main var i j stri
  • Go 程序编译过程(基于 Go1.21)

    版本说明 Go 1 21 官方文档 Go 语言官方文档详细阐述了 Go 语言编译器的具体执行过程 Go1 21 版本可以看这个 https github com golang go tree release branch go1 21 sr
  • 【go语言开发】编写单元测试

    本文主要介绍使用go语言编写单元测试用例 首先介绍如何编写单元测试 然后介绍基本命令的使用 最后给出demo示例 文章目录 前言 命令 示例 前言 在go语言中编写单元测试时 使用说明 测试文件命名 在 Go 语言中 测试文件的命名应与被测
  • go-zero 开发入门-加法客服端示例

    定义 RPC 接口文件 接口文件 add proto 的内容如下 syntax proto3 package add 当 protoc gen go 版本大于 1 4 0 时需加上 go package 否则编译报错 unable to d
  • go-zero开发入门之网关往rpc服务传递数据1

    go zero 的网关往 rpc 服务传递数据时 可以使用 headers 但需要注意前缀规则 否则会发现数据传递不过去 或者对方取不到数据 go zero 的网关对服务的调用使用了第三方库 grpcurl 入口函数为 InvokeRPC
  • go-zero开发入门-API服务开发示例

    接口定义 定义 API 接口文件 接口文件 add api 的内容如下 syntax v1 info title API 接口文件示例 desc 演示如何编写 API 接口文件 author 一见 date 2023年12月07日 vers
  • go-zero开发入门-API网关鉴权开发示例

    本文是 go zero开发入门 API网关开发示例 一文的延伸 继续之前请先阅读此文 在项目根目录下创建子目录 middleware 在此目录下创建文件 auth go 内容如下 鉴权中间件 package middleware impor
  • 协程-单线程内的异步执行

    1 仿协程实例 不同事件依次顺序执行 coding utf 8 import time def calculate 1 step event name for index in range step print This is s even
  • [每周一更]-(第55期):Go的interface

    参考地址 https juejin cn post 6978322067775029261 https gobyexample com interfaces https go dev tour methods 9 介绍下Go的interfa
  • golang 生成一年的周数

    GetWeekTimeCycleForGBT74082005 获取星期周期 中华人民共和国国家标准 GB T 7408 2005 参数 year 年份 GB T 7408 2005 func GetWeekTimeCycleForGBT74
  • 【go语言】结构体数据填充生成md错误码文件

    这里使用pongo2这个模版引擎库进行md文件渲染 GitHub flosch pongo2 Django syntax like template engine for Go package main import fmt github

随机推荐

  • npz,npy的输入和读取np.load和np.save

    np load和np save 是读写磁盘数组数据的两个主要函数 默认情况下 数组是以未压缩的原始二进制格式保存在扩展名为 npy的文件中 np savez 如果你想将多个数组保存到一个文件中的话 可以使用numpy savez函数 sav
  • 数学建模中的经典问题-旅行商(TSP)问题

    1 相关理论 2 算法流程 3 代码实现 4 结果显示 1 相关理论 旅行商 TSP 问题是数学建模中的经典问题 它是一个典型的NP完全问题 TSP问题可描述为 已知n个城区相互之间的距离 某一旅行商从城市出发访问每个城市一次且仅一次 最后
  • ios -Unity3D的EasyAR集成到已经有项目中。

    近期 在做AR这一块 用EasyAR集成到iOS端 由于现在到项目已经上线 下一版本要做一个AR功能 于是迫于需求需要 自己研究和翻阅读好多集成到资料 通过整理分出几个重要到模块 其中在这里指出Xcode9版本确实好坑 建议弃坑 该用稍微好
  • android studio agpbi error,Android Studio 3.1.1 打Jar包出现AGPBI异常解决

    今天 写好Demo兴致勃勃准备打个Jar包在Unity中测试下 不料 突然出现AGPBI这个异常 日志如下 AGPBI kind error text Program type already present android support
  • Android Recyclerview焦点变化问题导致下拉刷新视觉卡顿

    如题 最近做项目时偶然发现了一个Recyclerview嵌套Recycleview的问题 业务模块是订单列表 涉及到一个订单包含多个子订单的情况 所以考虑使用嵌套来展示页面 这一切都是正常的 没有任何问题 然而 随着业务的展开需要查看详情单
  • 自己写的PLC编程软件,和FANUC PMC功能基本保持一致

    自己写的PLC编程软件 和FANUC PMC功能基本保持一致 下载地址 免积分 链接 pan baidu com s 162 GcF7wh SNT3McATPPmg 提取码 1234 https download csdn net down
  • 基于ShuffleNetv2-YOLOv4模型的目标检测

    目录 1 引言 摘要 1 1 说明 1 2替换完成的工程请参考gitee 2 网络结构基础 2 1YOLOv3 2 1 YOLOv4算法 2 3 ShuffleNetv2 2 4 替换后的网络结构 3 实验结果 3 1实验环境配置及数据集介
  • 时间复杂度+常见复杂度解释

    前言 算法的效率 虽然计算机能快速的完成运算处理 但实际上 它也需要根据输入数据的大小和算法效率来消耗一定的处理器资源 要想编写出能高效运行的程序 我们就需要考虑到算法的效率 算法的效率主要由以下两个复杂度来评估 时间复杂度 评估执行程序所
  • Vue long精度丢失问题

    原因 vue前端对long类型的精度无法接收 javascript 的 Number 类型最大长度是17位 mysql 使用bigint 类型长度是20位 前端解决方法 在全局的网络请求 用了一个处理数据的插件 来转换 后端解决的方法 Co
  • 网络安全不可忽视!企业如何做好网络安全。

    随着互联网的高速发展 其面临的安全隐患也暴露无疑 比如网络攻击 黑客入侵等 都会严重影响到网络业务的运行 为此很多企业都绞尽脑汁寻找抵御各类网络安全隐患 国家也出台了相关的等保方案让企业能够免于后顾之忧 下面我们来说说目前网络安全的具体内容
  • android音视频!BAT大厂面试基础题集合,不吃透都对不起自己

    前言 现在已经进入招聘季节 本篇文章旨在分享知名互联网企业面试官面试方法和心得 希望通过本文的阅读能给程序员带来不一样的面试体验和感受 放松面试心态 积极备战 找到正确的学习路线 一 架构师专题 想要掌握复杂的技术 必须要理解其原理和架构
  • ROS学习笔记(二)文件系统

    ROS学习笔记 二 文件系统 开篇 ROS的文件系统结构 要学会建立一个ROS工程 首先要认识一个ROS工程 了解它们的组织架构 从根本上熟悉ROS项目的组织形式 了解各个文件的功能和作用 才能正确的进行开发和编程 本章的主要内容有 介绍c
  • 就现在!为元宇宙和Web3对互联网的改造做准备!

    欢迎来到Hubbleverse 关注我们 关注宇宙新鲜事 预计阅读时长 8分钟 本文仅代表作者个人观点 不代表平台意见 不构成投资建议 如今 互联网是各种不同的网站 应用程序和平台的集合 由于彼此分离 它们缺乏互操作性和数据可移植性 因此
  • ant design vue中menu组件递归渲染报错解决

    ant design vue中menu组件递归渲染报错 开始递归组件后打开页面后报错如下 解决如下 使 单 件 式递归 成菜单 Before v2 0 因组件内部会动态更改a sub menu的属性 如果拆分单文件 无法将属性挂载到a su
  • BI的需求调研的方法分类

    今天看到一篇文章 里面提到需求调研的几种思路 觉得分类有些道理 结合项目写一下 这种方法论在指导实践和体现专业两个方面都很实用 1 现有报表 这个是最常用的 使用这种方法注意区别报表目的 紧急度 和数据是否适合在BI实现 细节度 为什么以前
  • Oracle统计多张表的Count数的和

    需求描述 Table1 job1 job1 id name status other column 1 file1 process 2 file2 failed 3 file3 success Table2 job2 job2 id nam
  • 03:MYSQL----DQL,聚合函数

    目录 1 介绍 2 语法 3 聚合函数 4 DOL 语句练习 5 SQL执行顺序 1 介绍 数据查询语言 用来查询数据库中表的记录 2 语法 select 字段列表 from 表名列表 where 条件列表 group by 分组字段列表
  • 手写 git hooks 脚本

    我们的 Git 仓库中包含了编译后的代码 所以每次修改了源码 都需要运行一下编译命令 然后把源码和编译后的代码一起提交到 Git 仓库 这个流程没什么问题 但是 人脑不是电脑 总会有疏忽的时候 经常会出现这样一种情况 修改了源码 却忘记了运
  • sql判断字段是否为null,是否为空串

    问题现象 今天在项目中思考了一个问题 如何在sql中判断一个字段是否为 null值 是否为 空串 呢 问题分析 需要注意的是 null值 和 空串 并不是同一个概念 null值 就是这个字段没有赋值 也就是java中常说的 null 而 空
  • 权重实现随机抽奖

    一般抽奖是怎么实现的 在实习期间学会了一种通用的写法 在这里记录一下 最近在学Golang语法基础 这里就用Golang来写 package main import fmt time math rand func main r rand N