2011-12-23 2 views
3

이 코드를 이해하려고하는데 어떤 언어인지 확실하지 않습니다. 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

이것은 IIRC Java에 uint이 없기 때문에 C#에서 구현 된 이중 LCG 인 것으로 보입니다. LCG에 대한 자세한 내용은 on Wikipedia을 참조하십시오.

아직도 BASIC의 대부분의 방언에는 초기화를 위해 RANDOMIZERAND 또는 RANDOM의 명령어를 사용하여 난수 생성기가 내장되어 있습니다.

+0

감사합니다. 매우 도움이되었습니다. – doug

7

C#이어야합니다.

  • C++의 publicprivate: 와야.
  • 자바에는 uint이 없습니다.
  • 명명 규칙 (CamelCase)은 .NET 언어처럼 보이고 구문은 C와 유사합니다.
2

명명 규칙 (대문자로 시작하는 방법), 데이터 유형 (uint, double), 키워드 (개인, 공용, 정적), 프로그래밍 규칙 (별도 행의 중괄호) >, +, *, &) 나는 위의 코드에서 C# 인 프로그래밍 언어를 사용했다.

+0

감사합니다. 이것은 매우 도움이됩니다. – doug