这是一个简单的问题,但我被困住了。这是this paper中的准随机数生成器的代码。
void PlaneHammersley(float *result, int n)
{
float p, u, v;
int k, kk, pos;
for (k=0, pos=0 ; k<n ; k++) {
u = 0;
for (p=0.5, kk=k ; kk ; p*=0.5, kk>>=1)
if (kk & 1) // kk mod 2 == 1
u += p;
v = (k + 0.5) / n;
result[pos++] = u;
result[pos++] = v;
}
}
我尝试用Python进行翻译,第二个for循环对我来说却很神秘。结束条件是
kk
,它是一个整数,我不知道它何时评估为True。有人可以解释发生了什么吗?谢谢。
最佳答案
相当于:
for (p=0.5, kk=k ; kk != 0; p*=0.5, kk>>=1)