【发布时间】:2014-11-27 09:50:14
【问题描述】:
假设我们有来自函数的正态分布随机 int 值:
unsigned int myrand();
将其范围缩小到 [0, A] (int A) 的最常见方法是执行以下操作:
(double)rand() / UINT_MAX * A
现在我需要对 __int64 范围内的值执行相同的操作:
unsigned __int64 max64;
unsigned __int64 r64 = myrand();
r64 <<= 32;
r64 |= myrand();
r64 = normalize(r64, max64);
问题是通过一些 __int64 规范化返回范围,因为它不能放在双精度。由于性能原因,我不想将各种库用于大量数据。有没有办法在保存值的正态分布的同时快速轻松地缩小返回范围?
【问题讨论】:
标签: c visual-c++ math