在以下代码中:
float sfrand( int *seed )
{
float res;
seed[0] *= 16807;
*((unsigned int *) &res) = ( ((unsigned int)seed[0])>>9 ) | 0x40000000;
return( res-3.0f );
}
来源:http://iquilezles.org/www/articles/sfrand/sfrand.htm
最佳答案
seed[0]
与*seed
相同,这是seed
指针指向的第一个整数(如果不指向数组,则可能是唯一的整数)。*=
运算符是“按产品分配”运算符,seed[0] *= 16807;
与*seed = *seed * 16807;
,这是您要求的行所做的。
看来,整个函数是一种生成伪随机数的简单算法。修改种子的目的是,下一次调用将产生不同的伪随机数。
关于c - 该行seed [0] * = 16807有什么作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54974084/