C++ 不常用的奇淫巧计

news/2024/11/8 2:59:20/

leetcode-剑指offerII 071.按权重生成随机数

给定一个正整数数组 w ,其中 w[i] 代表下标 i 的权重(下标从 0 开始),请写一个函数 pickIndex ,它可以随机地获取下标 i,选取下标 i 的概率与 w[i] 成正比。

例如,对于 w = [1, 3],挑选下标 0 的概率为 1 / (1 + 3) = 0.25 (即,25%),而选取下标 1 的概率为 3 / (1 + 3) = 0.75(即,75%)。

也就是说,选取下标 i 的概率为 w[i] / sum(w) 。

/*
mt19937:一种随机数生成算法
uniform_int_distribution:均匀分布
accumulate():累加求和
partial_sum:求前缀和
back_inserter():插入到容器后面
lower_bound():查找下界
*/class Solution{
private:mt19937 gen;uniform_int_distribution<int> dis;vector<int> pre;
public:Solution(vector<int>& w):gen(random_device{}()), dis(1, accumulate(w.begin(), w.end(), 0)){partial_sum(w.begin(), w.end(), back_inserter(pre));}int pickIndex(){int x = dis(gen);return lower_bound(pre.begin(), pre.end(), x) - pre.begin();}
}

http://www.ppmy.cn/news/40578.html

相关文章

跨越DDD从理论到工程落地的鸿沟

DDD作为一种优秀的设计思想&#xff0c;的确为复杂业务治理带来了曙光。然而因为DDD本身难以掌握&#xff0c;很容易造成DDD从理论到工程落地之间出现巨大的鸿沟。就像电影里面的桥段&#xff0c;只谈DDD理论姿势很优美&#xff0c;一旦工程落地就跪了…所以DDD的项目&#xff…

【开源项目】ELADMIN 后台管理系统

项目简介 一个基于 Spring Boot 2.1.0 、 Spring Boot Jpa、 JWT、Spring Security、Redis、Vue的前后端分离的后台管理系统 开发文档&#xff1a; https://eladmin.vip 体验地址&#xff1a; ELADMIN 账号密码&#xff1a; admin / 123456 项目源码 后端源码前端源码git…

无线电频谱管理电磁兼容分析系统

一、概述 随着社会经济发展和科学技术进步&#xff0c;无线电通信事业蒸蒸日上&#xff0c;无线电新技术、新业务和新产品层出不穷&#xff0c;各类台站数量高速增长&#xff0c;电磁环境日益复杂&#xff0c;对频谱资源实施有效管理的难度愈来愈大。特别是在中国入世和政府…

Makefile学习

什么是Makefile 使用 GCC 编译器在 Linux 进行 C 语言编译&#xff0c;通过在终端执行 gcc 命 令来完成 C 文件的编译&#xff0c;如果我们的工程只有一两个 C 文件还好&#xff0c;需要输入的命令不多&#xff0c;当文件有几十、上百甚至上万个的时候用终端输入 GCC 命令的方…

通达信欧奈尔RPS指标公式详解

RPS相对强度指标&#xff0c;是国内的投资者根据威廉欧奈尔所著书籍《笑傲股市》中的RS评级改进的。 根据书中介绍&#xff1a; RS评级衡量了某一给定股票在过去52周内相对股市中其他股票的表现。市场上每一只股票都被指定了1~99范围内的某一数值&#xff0c;99代表相对强度最高…

Linux中docker常用命令大全

一、docker命令 #-------------------------------------docker启动与关闭 # 启动docker systemctl start docker# 关闭docker systemctl stop docker# 重启docker systemctl restart docker# docker设置随服务启动而自启动 systemctl enable docker#------------------------…

mybatis使用高阶技巧

自定义结果集处理 mybatis的结果集处理在DefaultResultSetHandler.handleResultSet里&#xff1a; private void handleResultSet(ResultSetWrapper rsw, ResultMap resultMap, List<Object> multipleResults, ResultMapping parentMapping) throws SQLException {try …

02-PostgreSQL 存储过程的进阶介绍(含游标、错误处理、自定义函数、事务)

&#x1f3c6; 文章目标&#xff1a;帮助那些了解Oracle PL/SQL&#xff0c;但是不熟悉PL/pgSQL 的人&#xff0c;用于快速整改或者上手。 &#x1f340; 02-PostgreSQL 存储过程的进阶介绍&#xff08;含游标、错误处理、自定义函数、事务&#xff09; ✅ 创作者&#xff1a;J…