线性同余

 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) ;
    }

  

posted @ 2022-06-06 14:34  熵殇  阅读(27)  评论(0编辑  收藏  举报