未知语言随机码生成器

时间:2011-12-23 15:46:42

标签: c# java c++

我正在尝试理解这段代码,我不确定它是什么语言。它似乎是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;
 }

4 个答案:

答案 0 :(得分:8)

是C#,代码来自http://www.codeproject.com/KB/recipes/SimpleRNG.aspx?display=Print

用于生成随机数。在上面的链接上有相当多的信息。为了找到它我用Google搜索2.38 ...数字,因为它看起来很熟悉。

答案 1 :(得分:7)

应该是C#。

  • C ++的publicprivate后面必须跟:
  • Java没有uint
  • 命名约定(CamelCase)看起来像.NET语言,语法类似于C语言。

答案 2 :(得分:4)

这似乎是在C#中实现的双重LCG(我说C#而不是Java,因为IIRC Java没有uint)。您可以找到有关LCG on Wikipedia的更多信息。

尽管如此,BASIC的大多数方言都内置了一些随机数生成器,通常使用说明RANDOMIZE进行初始化,RANDRANDOM获取随机数。

答案 3 :(得分:2)

由于命名约定(以大写字母开头的方法),数据类型(uint,double),关键字(私有,公共,静态),编程约定(单独行中的大括号)和运算符(&gt; &gt;,+,*,&amp;)我很确定上面代码片段中使用的编程语言是C#。