鱼C论坛

 找回密码
 立即注册
查看: 722|回复: 6

[已解决]怎么区分时weight还是cum_weight

[复制链接]
发表于 2024-3-9 14:12:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
choices(['red', 'black', 'green'], [18, 18, 2], k=6)

这段代码中,怎么区分18,18,2是相对权重还是累积权重
相对权重和累积权重有什么区别
最佳答案
2024-3-9 15:25:18
在这段代码中,18, 18, 2 是相对权重,而不是累积权重。

相对权重(也叫作权重或者概率重量)在选择中的含义是,一个对象被选择的可能性直接与其相对权重成比例。在你的例子中,red 和 black 的选择概率是 18/(18+18+2) = 0.45,green 的选择概率是 2/(18+18+2) = 0.05。

累积权重则是一种连续计算的方式,每个权重是前一个权重和当前对象权重的和。例如,假设我们有一个权重列表 [1, 2, 3, 4],那么其对应的累积权重就是 [1, 1+2, 1+2+3, 1+2+3+4],也就是 [1, 3, 6, 10]。

在 random.choices() 函数中,我们只使用相对权重,每个权重代表了对应对象被选择的概率,而不使用累积权重。这就是为什么在你的代码中的 18, 18, 2 是相对权重。

只有在一些特定的情境下,我们会使用到累积权重,例如在做某些特定的随机选择或者模拟时。在大多数情况下,我们会直接使用相对权重。

求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-3-9 14:12:37 | 显示全部楼层
在Python的random.choices函数中,参数weights用于指定相对权重或累积权重。

- 如果使用相对权重,weights参数应该提供和choices参数长度相等的列表,列表中的每个元素表示对应选择的权重。例如,使用weights=[18, 18, 2],就表示第一个选择的权重是18,第二个选择的权重也是18,第三个选择的权重是2。
- 如果使用累积权重,weights参数应该提供和choices参数长度相等的累积权重列表。这里的累积权重是指从第一个选择到当前选择的所有权重之和。例如,使用weights=[18, 36, 38],就表示第一个选择的累积权重是18,第二个选择的累积权重是36,第三个选择的累积权重是38-36=2。

所以,在给定的示例中,weights参数的值表示第一个选择的相对权重(或累积权重)是18,第二个选择的相对权重(或累积权重)是18,第三个选择的相对权重(或累积权重)是2。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-9 14:20:33 | 显示全部楼层
相对权重和累积权重有什么区别
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-9 14:21:02 | 显示全部楼层
captaindai 发表于 2024-03-09 14:20
相对权重和累积权重有什么区别


相对权重和累积权重是两种不同的方式来表示选择的概率分布。在使用随机选择函数时,这两种方式可以用来指定不同的选择权重。

相对权重是指每个选择的权重与其他选择相对而言的比例。例如,在使用random.choices函数时,如果给出了相对权重[18, 18, 2],那么第一个选择的相对权重是18,第二个选择的相对权重也是18,第三个选择的相对权重是2。这意味着第一个选择的概率是第二个选择的概率的三倍。

累积权重是指每个选择的权重被累积起来形成的序列。例如,在使用random.choices函数时,如果给出了累积权重[18, 36, 38],那么第一个选择的累积权重是18,第二个选择的累积权重是36,第三个选择的累积权重是38。这意味着如果选择一个随机数x,并且x小于等于18,就会选择第一个选择;如果x大于18且小于等于36,就会选择第二个选择;如果x大于36且小于等于38,就会选择第三个选择。

因此,相对权重表示每个选择的相对概率,而累积权重表示每个选择的概率累积值。选择使用哪种方式取决于你希望如何定义选择的概率分布。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-9 14:24:15 | 显示全部楼层
choices(['red', 'black', 'green'], [18, 18, 2], k=6)
用累积权重怎么表示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-9 14:24:31 | 显示全部楼层
captaindai 发表于 2024-03-09 14:24
choices(, , k=6)
用累积权重怎么表示


使用累积权重来表示choices函数的参数可以通过提供一个累积权重列表来实现。假设你有三个选择,对应的累积权重分别是18, 36, 38。那么你可以将这些累积权重作为weights参数传递给choices函数。例如,你可以这样写代码:
import random

choices = [1, 2, 3]
cum_weights = [18, 36, 38]

result = random.choices(choices, cum_weights=cum_weights, k=6)
print(result)

这段代码中,choices列表包含了你的三个选择。cum_weights列表则指定了每个选择的累积权重。k参数指定了你想要进行多少次随机选择。运行这段代码,会得到一个长度为6的列表,其中包含了根据权重随机选择的结果。

需要注意的是,累积权重列表的长度必须与choices参数的长度相等,并且累积权重列表中的值必须以递增的方式排序。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-9 15:25:18 | 显示全部楼层    本楼为最佳答案   
在这段代码中,18, 18, 2 是相对权重,而不是累积权重。

相对权重(也叫作权重或者概率重量)在选择中的含义是,一个对象被选择的可能性直接与其相对权重成比例。在你的例子中,red 和 black 的选择概率是 18/(18+18+2) = 0.45,green 的选择概率是 2/(18+18+2) = 0.05。

累积权重则是一种连续计算的方式,每个权重是前一个权重和当前对象权重的和。例如,假设我们有一个权重列表 [1, 2, 3, 4],那么其对应的累积权重就是 [1, 1+2, 1+2+3, 1+2+3+4],也就是 [1, 3, 6, 10]。

在 random.choices() 函数中,我们只使用相对权重,每个权重代表了对应对象被选择的概率,而不使用累积权重。这就是为什么在你的代码中的 18, 18, 2 是相对权重。

只有在一些特定的情境下,我们会使用到累积权重,例如在做某些特定的随机选择或者模拟时。在大多数情况下,我们会直接使用相对权重。

求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 07:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表