我试图理解这段代码,我不确定它是什么语言.它似乎是
Java但我不确定.如果我发布错误,我会道歉.我正在做志愿者并帮助完成日历,并试图找到一个随机生成器来处理基本的.我立即试图了解这是做什么的.
private static uint GetUint() { m_z = 36969 * (m_z & 65535) + (m_z >> 16); m_w = 18000 * (m_w & 65535) + (m_w >> 16); return (m_z << 16) + m_w; } public static double GetUniform() { // 0 <= u < 2^32 uint u = GetUint(); // The magic number below is 1/(2^32 + 2). // The result is strictly between 0 and 1. return (u + 1.0) * 2.328306435454494e-10; }
解决方法
这似乎是在C#中实现的双重LCG(我说C#而不是Java,因为IIRC Java没有uint).您可以找到有关LCG
on Wikipedia的更多信息.
尽管如此,BASIC的大多数方言都内置了一些随机数发生器,通常使用指令RANDOMIZE进行初始化,使用RAND或RANDOM来获得随机数.