线性同余
uint private _seed;
function srand(uint64 seed) external {
_seed = seed;
}
event Random(uint[] value);
// 线性同余
function _rand(uint seed) internal view returns(uint) {
seed = seed * 214013 + 2531011;
return uint64(_seed >> 16);
}
function rand(uint cnt) external returns(uint[] memory) {
uint[] memory list = new uint[](cnt);
uint seed = _seed;
for (uint i; i < cnt; i++) {
seed = _rand(seed);
list[i] = seed & 0x7fff;
}
//_seed = _rand(seed);
return list;
//emit Random(list);
}
线性同余 数学获取随机数
function rand() public {
_seed = _seed * 214013 + 2531011;
_seed = uint64(_seed >> 16);
emit Random(_seed, _seed & 0x7fff) ;
}

浙公网安备 33010602011771号