带你读《图解算法小抄》二十六、数据统计(1)

简介: 带你读《图解算法小抄》二十六、数据统计(1)

二十六、数据统计

  1. 加权随机

image.pngWeighted Random

1什么是"加权随机"

假设你有一个项目列表。项目可以是任何东西。例如,我们可能有一个喜欢吃的水果和蔬菜列表:

image.png

 

权重列表表示每个项目的权重(或概率、重要性)。权重是数字。例如,权重列表 [3, 7, 1] 可以表示:

 

image.png

 

如果我们以概率为基础来讲,那么权重列表可能是一个总和为1的浮点数数组(例如[0.1, 0.5, 0.2, 0.2])。

加权随机是一个函数,它会根据每个项目的权重随机返回列表中的一个项目,使得权重较大的项目更容易被选中。

 

函数的示例接口:

image.png

 

2加权随机的应用

  • 遗传算法中,加权随机用于"选择"阶段,当我们需要根据个体的适应度评分选择最适应/最强大的个体进行交配,并产生下一代更强大的个体。你可以500行代码中构建自动停车汽车文章中找到一个示例。
  • 循环神经网络(RNN)中,当根据下一个字母的概率来决定下一个要选择的字母(以形成句子)时使用加权随机。你可以在使用循环神经网络(RNN)生成食谱的Jupyter笔记本中找到一个示例。
  • Nginx负载均衡,为了将HTTP请求更频繁地发送到权重较高的服务器。
  • 等等...

3算法

直接的方法如下:

 

  • 根据权重重复列表中的每个项目。
  • 从列表中随机选择一个项目。

例如,在水果和蔬菜的情况下,我们可以生成大小为3 + 7 + 1 = 11的以下列表:

 

image.png

 

然而,正如你所看到的,这种方法可能需要大量的内存,特别是当我们需要在weightedItems列表中重复很多项目时。想象一下,如果你需要将一个字符串如"some-random-string"(18个字节)重复十亿次。你将需要额外分配大约180Mb的内存空间来存储这个数组。


带你读《图解算法小抄》二十六、数据统计(2)https://developer.aliyun.com/article/1347723?groupCode=tech_library

相关文章
|
9月前
|
算法
带你读《图解算法小抄》二、双向链表(3)
带你读《图解算法小抄》二、双向链表(3)
|
9月前
|
存储 缓存 算法
带你读《图解算法小抄》一、链表(1)
带你读《图解算法小抄》一、链表(1)
带你读《图解算法小抄》一、链表(1)
|
8月前
|
人工智能 算法 架构师
再现神作!字节算法小抄官方整版,已助1000+应届生拿到25w+年薪
2023年经济下行趋势明显,程序员出路在哪儿? 今年,毕业人数将达到1158万,导致很多公司招聘非常谨慎、要求也变得非常更高。
再现神作!字节算法小抄官方整版,已助1000+应届生拿到25w+年薪
|
9月前
|
算法
带你读《图解算法小抄》二、双向链表(1)
带你读《图解算法小抄》二、双向链表(1)
带你读《图解算法小抄》二、双向链表(1)
|
8月前
|
SQL 算法 架构师
字节算法中了80%!靠着这份GitHub上的算法小抄,成功斩获Offer
前言 最近,GitHub上的算法小抄又火了!已经有不少人靠它手撕算法题,拿下了字节、腾讯等大厂offer
|
9月前
|
算法
带你读《图解算法小抄》二、双向链表(2)
带你读《图解算法小抄》二、双向链表(2)
|
9月前
|
算法
带你读《图解算法小抄》一、链表(2)
带你读《图解算法小抄》一、链表(2)
|
9月前
|
缓存 算法 前端开发
带你读《图解算法小抄》序言(1)
带你读《图解算法小抄》序言(1)
|
9月前
|
算法 前端开发
带你读《图解算法小抄》序言(2)
带你读《图解算法小抄》序言(2)
|
9月前
|
算法 前端开发
带你读《图解算法小抄》三、队列
带你读《图解算法小抄》三、队列