C++自带或简单代码的随机数发生器性能

C++自带或简单代码的随机数发生器性能:
1亿次生成
minstd(32位) 1045ms
mt19937(32位,需要5000字节存储) 640ms
rand(VS 15位) 3089ms
JKISS32(32位) 218ms
lfsr113_Bits(32位) 375ms


unsigned int JKISS32() {
    static unsigned int x = 123456789, y = 234567891, z = 345678912, w = 456789123, c = 0;
    y ^= (y << 5); y ^= (y >> 7); y ^= (y << 22);
    t = z + w + c; z = w; c = t < 0; w = t & 2147483647;
    x += 1411392427;
    return x + y + w;
}

unsigned int lfsr113_Bits(void)
{
    static unsigned int z1 = 12345, z2 = 12345, z3 = 12345, z4 = 12345;
    unsigned int b;
    b = ((z1 << 6) ^ z1) >> 13;
    z1 = ((z1 & 4294967294U) << 18) ^ b;
    b = ((z2 << 2) ^ z2) >> 27;
    z2 = ((z2 & 4294967288U) << 2) ^ b;
    b = ((z3 << 13) ^ z3) >> 21;
    z3 = ((z3 & 4294967280U) << 7) ^ b;
    b = ((z4 << 3) ^ z4) >> 12;
    z4 = ((z4 & 4294967168U) << 13) ^ b;
    return (z1 ^ z2 ^ z3 ^ z4);
}
std::minstd_rand gen_std; gen_std();
std::mt19937 gen_mt; gen_mt();
rand();
JKISS32();
lfsr113_Bits();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值