0
使用對參考該C代碼(源從http://en.wikipedia.org/wiki/Xorshift):xorshift128 + PRNG執行的w/o無符號長
uint64_t s[2];
uint64_t xorshift128plus(void) {
uint64_t x = s[0];
uint64_t const y = s[1];
s[0] = y;
x ^= x << 23; // a
x ^= x >> 17; // b
x ^= y^(y >> 26); // c
s[1] = x;
return x + y;
}
在保持隨機性性質方面的等價的Java代碼(除其他以下種子和返回值之間的不同映射):
long s[2];
long xorshift128plus(){
long x = s[0];
long y = s[1];
s[0] = y;
x ^= x << 23; // a
x ^= x >>> 17; // b
x ^= y^(y >>> 26); // c
s[1] = x;
return x + y;
}
它實際上看起來和我完全一樣。有什麼不同?顯然,忽略結果的簽名。 – harold 2015-02-10 20:32:20
我只是想確認它們基本上是等價的。 – lgp 2015-02-10 20:57:50
種子之間的映射返回值也是一樣的。 – harold 2015-02-10 21:22:21