http://en.wikipedia.org/wiki/Multiply-with-carry#Complementary-multiply-with-carry_RNGs には C のコードがいくつかあります
コンパイルしようとしていますが、コンパイルすると次のエラーが発生します c:\program files (x86)\codeblocks\mingw\bin..\lib\gcc\mingw32\4.4.1......\libmingw32 .a(main.o):main.c|| `WinMain@16' への未定義の参照 |
これがコードです
実装方法を見つけて、ブースターのメルセンヌツイスターの代わりに使いたいと思っています。
誰かが指摘したように、私は主な機能がありませんでしたが、今でもそれを実行するのに問題があります。
#include <stdint.h>
#define PHI 0x9e3779b9
static uint32_t Q[4096], c = 362436;
int main
{
init_rand(6);
int c = rand_cmwc();
};
void init_rand(uint32_t x)
{
int i;
Q[0] = x;
Q[1] = x + PHI;
Q[2] = x + PHI + PHI;
for (i = 3; i < 4096; i++)
Q[i] = Q[i - 3] ^ Q[i - 2] ^ PHI ^ i;
}
uint32_t rand_cmwc(void)
{
uint64_t t, a = 18782LL;
static uint32_t i = 4095;
uint32_t x, r = 0xfffffffe;
i = (i + 1) & 4095;
t = a * Q[i] + c;
c = (t >> 32);
x = t + c;
if (x < c) {
x++;
c++;
}
return (Q[i] = r - x);
}