【发布时间】:2025-11-21 14:10:01
【问题描述】:
假设我有一个值向量,代表类的上边界,以对(bin)值进行分类。例如向量 { 1, 3, 5, 10 } 表示 bin [0, 1[, [1, 3[, [3, 5[ 和 [5,10[。如何在恒定时间内实现这些类(0,1,2,3)之一中的随机值 V 的分类?遍历边界列表并在 V 超过 bin 的上边界时停止是微不足道的;但这是 O(n) wrt 箱的数量;我希望在恒定时间内做到这一点。
在我真正输入代码之前,我认为这是微不足道的,通过设置一个查找表,根据类边界将每个 V 除以某个值,然后使用除法的(四舍五入)结果来查找 bin查找表中的编号。但是我发现它比我想象的要困难得多,以一种通用的方式来最小化查找表的大小,同时仍然是准确的,而不管 bin 边界之间的比例距离如何;并且以一种适用于所有真实价值的方式。使用 Google'ing,我只能找到确定垃圾箱边界的算法,至少使用我所做的术语。
【问题讨论】:
-
如果这真的是关于随机抽样的问题,请在谷歌中搜索别名方法。
-
我刚刚了解到反转方括号也表示排除元素。看看他们是否像那样挨在一起是非常痛苦的(与
[0, 1)相比,这意味着相同)。