- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在answers to this other question ,提供以下解决方案,由 OpenBSD 提供,为简洁起见重写,
uint32_t foo( uint32_t limit ) {
uint32_t min = -limit % limit, r = 0;
for(;;) {
r = random_function();
if ( r >= min ) break;
}
return r % limit;
}
uint32_t min = -limit % limit
这行究竟是如何工作的?我想知道的是,是否有数学证明它确实计算了随机数的某个下限并充分消除了模偏差?
最佳答案
在-limit % limit
中,考虑-limit
产生的值是2w-limit
,其中 w 是正在使用的无符号类型的宽度(以位为单位),因为无符号算术被定义为对模 2w 进行换行/sup>。 (假定 limit
的类型不小于 int
,这将导致它被提升为 int
并使用带符号的算术,并且代码可能会中断。)然后识别 2w−limit
与 2w/sup> 模 limit
。因此 -limit % limit
产生 2w 除以 limit
的余数。设为 min
。
在整数集 {0, 1, 2, 3,… 2w−1} 中,余数 r (0 ≤ r <limit
) 除以 limit
时至少出现 floor(2w/sup>/limit
) 次。我们可以识别它们中的每一个:对于 0 ≤ q < floor(2w/limit
),q•limit
+ r 有余数 r 并且在集合中。如果 0 ≤ r <min
,则集合中还有一个这样的数字,其中 q = floor(2w/限制
)。这些占集合 {0, 1, 2, 3,… 2w−1} 中的所有数字,因为 floor(2w /limit
)•limit
+ min
= 2w,这样我们的计数就完成了。对于 r 个不同的余数,有 floor(2w/limit
)+1 个数在集,对于 min
−r 其他余数,有 floor(2w/limit
) 和集合中的余数。
现在假设我们从这个集合 {0, 1, 2, 3, ... 2w−1} 中均匀地随机抽取一个数。显然,余数为 0 ≤ r <min
的数字可能出现得更频繁一些,因为集合中的数字更多。通过拒绝每个此类数字的一个实例,我们将它们排除在我们的分布之外。实际上,我们从集合 { min
, min
+1, min
+2,... 2w−1}。结果是一个分布,其中每个数字恰好出现 floor(2w/limit
) 次,并具有特定的余数。
由于每个余数在有效分布中出现的次数相同,因此每个余数都有相同的机会被统一抽签选中。
关于c++ - 当摆脱模偏差时,min = -upper_bound % upper_bound;//如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57512062/
我正在用 Objective C 重写蒙特卡罗模拟,以便在 VBA/Excel 的 dll 中使用。计算中的“引擎”是创建 0 到 10001 之间的随机数,并将其与 5000-7000 附近的变量进
我目前正在尝试使用 Flask 创建一个简单的 Web 应用程序,用于交互式神经网络训练。我正在努力解决的是在训练前馈神经网络后检索隐藏层的权重 - 我的目标是为 Tensorflow's Playg
我知道如何找到手机当前所在位置的真实航向/磁航向,但是否有可能找到远程位置的磁偏差/磁偏角? 我想做的是能够在 map 上的一个地方放置一个图钉,然后找到真实的方位角和从该点开始有磁差的方位角。 谢谢
函数方法glTexImage2D将“level”作为参数,表示细节级别偏差。但是,可以使用 glTexParameteri 和 GL_TEXTURE_LOD_BIAS 目标来设置纹理的 LOD 偏差。
有没有一种简单的方法来显示我在训练后输入到使用 Neurolab 开发的 ANN 中的每个属性的偏差或权重? 最佳答案 是的,您可以看到所有图层的权重和偏差。通过使用 net.layers[i].np
我正在用我目前在 Metal 中使用的应用程序的 Android 版本重写一个 OpenGL 过滤器。它使用以下纹理查找函数:vec4 texture2D(sampler2D 采样器,vec2 坐标,
我有一个简单的算法,可以让对象在 Java 中以给定的最大速度跟随鼠标指针。该算法的关键在于: // Set up displacement trackers for later. // (These
我在我的 Android 应用程序中使用“HelveticaNeue.ttf”作为自定义字体;对于所有以前的 android 版本都很好,但是对于 lollipop,它比通常的字体拉伸(stretch
我正在寻找一种方法来生成一组具有指定均值和标准差的整数。偏差。 使用随机库,可以生成一组以高斯方式分布的随机 double ,这看起来像这样: #include std::tr1::normal_d
我正在尝试训练 LambdaMART 模型来对对象列表执行成对排序。我的训练数据集由 50,000 个 112 维特征向量组成。每个特征都由一个非负整数编码。 目标值是正整数(不连续)。给定两个新实例
我在名为“df”的数据框中有时间序列数据,并且计算 z 分数的代码如下: mean = df.mean() standard_dev = df.std() z_score = (df - mean)
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 3 年前。 Improve th
我正在尝试在 TensorFlow 中执行以下线性回归,但我的输出都是 Inf 和 NaN。 我的输入数据集必须是 Y=0.5*X + 2 + 噪声;其中 X 是大小 (1000) 的正态分布,噪声是
我是一名优秀的程序员,十分优秀!