如何将这一部分C++代码转换为C#?

Spe*_*dge 1 c# c++

试图转换一些代码,但对于我所有的谷歌搜索,我无法弄清楚如何转换这一点.

    float fR = fHatRandom(fRadius);
    float fQ = fLineRandom(fAngularSpread ) * (rand()&1 ? 1.0 : -1.0);
    float fK = 1;
Run Code Online (Sandbox Code Playgroud)

这一点

(rand()&1 ? 1.0 : -1.0); 
Run Code Online (Sandbox Code Playgroud)

我弄不清楚.

Ale*_*lex 7

它是1或-1,有50/50的几率.

等效的C#代码是:

((new Random().Next(0, 2)) == 0) ? 1.0 : -1.0; 
Run Code Online (Sandbox Code Playgroud)

Next(0,2) 将返回0或1.

如果代码被调用很多,你应该存储实例Random并重新使用它.当您创建新实例时Random,会使用确定伪随机数序列的种子进行初始化.为了获得更好的"随机性",您不应经常重新初始化随机序列.