python 加权随机算法_python中的加权随机样本

从你的代码:..

weight_sample_indexes = lambda weights, k: random.sample([val

for val, cnt in enumerate(weights) for i in range(cnt)], k)

..我认为权重是正整数,而“没有替换”你的意思是没有替换解开的序列.

这是一个基于random.sample和O(log n)__getitem__的解决方案:

import bisect

import random

from collections import Counter, Sequence

def weighted_sample(population, weights, k):

return random.sample(WeightedPopulation(population, weights), k)

class WeightedPopulation(Sequence):

def __init__(self, population, weights):

assert len(population) == len(weights) > 0

self.population = population

self.cumweights = []

cumsum = 0 # compute cumulative weight

for w in weights:

cumsum += w

self.cumweights.append(cumsum)

def __len__(self):

return self.cumweights[-1]

def __getitem__(self, i):

if not 0 <= i < len(self):

raise IndexError(i)

return self.population[bisect.bisect(self.cumweights, i)]

total = Counter()

for _ in range(1000):

sample = weighted_sample("abc", [1,10,2], 5)

total.update(sample)

print(sample)

print("Frequences %s" % (dict(Counter(sample)),))

# Check that values are sane

print("Total " + ', '.join("%s: %.0f" % (val, count * 1.0 / min(total.values()))

for val, count in total.most_common()))

产量

['b', 'b', 'b', 'c', 'c']

Frequences {'c': 2, 'b': 3}

Total b: 10, c: 2, a: 1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489147.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

9大领域187项全球工程前沿发布!有你的研究方向吗?

来源&#xff1a;科学网12月10日&#xff0c;中国工程院战略咨询中心、科睿唯安以及高等教育出版社在中国工程院联合发布《全球工程前沿2019》报告。报告围绕机械与运载工程、信息与电子工程、化工冶金与材料工程、能源与矿业工程、土木水利与建筑工程、环境与轻纺工程、农业、…

ES6兼容性

https://kangax.github.io/compat-table/es6/ 转载于:https://www.cnblogs.com/lilei9110/p/6364740.html

linux mysql插入数据乱码_解决Linux下Tomcat向MySQL插入数据中文乱码问题

一、问题在windows上面使用eclipse开发的项目在windows上面运行一切正常&#xff0c;部署到腾讯云时出现向MySQL数据库中插入数据是中文乱码二、解决办法1、尝试一直接在linux上面使用insert语句插入中文&#xff0c;正常2、尝试二在tomcat配置文件server.xml中加入useBodyEnco…

从零开始用python处理excel数据_Python对Excel的操作

Python几个读取Excel库的介绍:xlwings可结合 VBA 实现对 Excel 编程&#xff0c;强大的数据输入分析能力&#xff0c;同时拥有丰富的接口&#xff0c;结合 pandas/numpy/matplotlib 轻松应对 Excel 数据处理工作。openpyxl简单易用&#xff0c;功能广泛&#xff0c;单元格格式/…

没有“好的”数据,AI就没有未来?听听云测数据怎么说

AI的崛起离不开“好的”数据作为地基&#xff0c;这也是云测数据成立的初衷所在。算力、模型和数据构成了人工智能的三要素&#xff0c;过去&#xff0c;我们过多的把目光聚焦于算力和模型上&#xff0c;殊不知&#xff0c;随着人工智能的深入&#xff0c;好的算法和模型已不再…

IP地址的分类——a,b,c 类是如何划分的

现在的IP网络使用32位地址&#xff0c;以点分十进制表示&#xff0c;如172.16.0.0。地址格式为&#xff1a;IP地址网络地址&#xff0b;主机地址 或 IP地址主机地址&#xff0b;子网地址&#xff0b;主机地址。 IP地址类型 最初设计互联网络时&#xff0c;为了便于寻址以及层次…

idea中event log_【JavaScript 教程】事件——Event 对象

作者 | 阮一峰概述事件发生以后&#xff0c;会产生一个事件对象&#xff0c;作为参数传给监听函数。浏览器原生提供一个Event对象&#xff0c;所有的事件都是这个对象的实例&#xff0c;或者说继承了Event.prototype对象。Event对象本身就是一个构造函数&#xff0c;可以用来生…

python爬取网页新闻_Python爬取新闻网数据

前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。PS&#xff1a;如有需要Python学习资料的小伙伴可以加点击下方链接自行获取基本开发环境Python 3.6Pycharmimport parselimport requestsimport re目标网页分析今天就爬…

谷歌新智能体Dreamer将亮相NeurIPS 2019,数据效率比前身PlaNet快8个小时

来源&#xff1a;雷锋网在具有挑战性的环境中&#xff0c;一些人工智能系统通过利用过去经验所提供的世界表象来实现目标。研究人员将这些应用推广到新的情况&#xff0c;使它们能够在以前从未遇到过的环境中完成任务。事实证明&#xff0c;强化学习——一种使用奖励来推动软件…

Highcharts属性与Y轴数据值刻度显示Y轴最小最大值

Highcharts 官网&#xff1a;https://www.hcharts.cn/demo/highcharts Highcharts API文档&#xff1a;https://api.hcharts.cn/highcharts#yAxis.tickmarkPlacement Highcharts属性与Y轴数据值刻度显示Y轴最小最大值 Highcharts.setOptions({global:{useUTC : false}}); $(f…

mysql 游标总条数_mysql 游标的使用总结

一、游标的基本概念游标&#xff1a;游标是一个存储在Mysql服务器上的数据库查询&#xff0c;它不是一条select语句&#xff0c;而是被该语句检索出来的结果集。本人&#xff0c;学习游标中&#xff0c;曾遇到一个问题&#xff0c;循环总是最后多执行一次。下面分析程序&#x…

AR行业成本拆解解析

来源&#xff1a;三极光电科技一、AR 产业简介&#xff08;一&#xff09;AR 定义AR 技术&#xff08;AugmentedReality&#xff0c;AR&#xff09;是借助光电显示技术、交互技术、多种传感技术和计算机图形与多媒体技术将计算机生成的虚拟环境与用户周围的真实环境融为一体&am…

python语言处理excel_Python语言操作excel

本文主要向大家介绍了Python语言操作excel&#xff0c;通过具体的内容向大家展示&#xff0c;希望对大家学习Python语言有所帮助。#!/usr/bin/env python#coding: utf-8import xlsxwriterworkbook xlsxwriter.Workbook(demo1.xlsx)worksheet workbook.add_worksheet()workshe…

MySQL索引的索引长度问题

转自&#xff1a;http://samyubw.blog.51cto.com/978243/223773 MySQL的每个单表中所创建的索引长度是有限制的,且对不同存储引擎下的表有不同的限制。  在MyISAM表中&#xff0c;创建组合索引时&#xff0c;创建的索引长度不能超过1000&#xff0c;注意这里索引的长度的计算…

怎么查询mysql的语法_mysql查询语法

-- 基本查询-- 查询所有字段-- select * from 表名;select * from students;select * from classes;-- 查询指定字段-- select 列1,列2,... from 表名;select name, gender from students;-- 使用 as 给字段起别名-- select 字段 as 名字.... from 表名;select name as 名字, g…

mimo雷达信号处理_雷达学术入门脉冲雷达信号处理概述

Reviewed by &#xff1a;甜草莓 Robert Zhou&#xff1b;前置知识&#xff1a;概率论与统计学。面向人群&#xff1a;本科生、研究生/信号处理博士。 编者&#xff1a;对于信号处理来说&#xff0c;雷达和通信一直是一体两面&#xff0c;从MIMO通信到MIMO雷达&#xff0c;从OF…

人类历史十大经典物理实验,有些实验就在你身边为何你没注意到?

来源&#xff1a;数学职业家实验是科学研究的基本方法之一&#xff0c;也是人类认识自然现象、自然性质、自然规律的途径。现代实验技术的发展&#xff0c;不断地揭示和发现各种新的物理现象&#xff0c;日益加深人们对客观世界规律的正确认识&#xff0c;从而推动物理学的向前…

一、linux搭建jenkins+github详细步骤

事情缘由&#xff1a; 现在在做的主要工作是通过jenkinspostman实现api的自动化测试&#xff0c;想要达到的效果是&#xff0c;api自动化测试定时跑脚本的同时&#xff0c;github有新的代码提交&#xff0c;jenkins会自动检测部署新提交的代码&#xff0c;并且再次将api自动化脚…

matlab插值与拟合例题_MATLAB中数据插值和数据拟合的用法

一、数据插值&#xff1a;插值是在一组已知数据点的范围内添加新数据点的技术。可以使用插值来填充缺失的数据、对现有数据进行平滑处理以及进行预测等。MATLAB 中的插值技术可分为适用于网格上的数据点和散点数据点。从数学上来说&#xff0c;数据插值是一种函数逼近的方法。数…

python中with的用法_python 中 with的用法

with 语句使用于对资源进行访问的场合,确保不管使用过程是否发生异常都会执行必要的"清理"操作,释放资源,比如文件使用后自动关闭/线程中锁的自动获取和释放with open("&#xff11;.txt") as file:data file.read()使用with,能够减少冗长,还能自动处理上…