dreamzqw
驱动牛犊
驱动牛犊
  • 注册日期2004-11-25
  • 最后登录2019-04-08
  • 粉丝1
  • 关注0
  • 积分19分
  • 威望182点
  • 贡献值0点
  • 好评度55点
  • 原创分1分
  • 专家分2分
阅读:2230回复:3

Windows CE下随机数生成函数

楼主#
更多 发布于:2007-10-15 14:37
DWORD sr;

int RandBit() {
    if (!sr)
        if (!(sr = GetTickCount()))
            sr = 1;
    sr = ((((sr>>7) ^ (sr>>5) ^ (sr>>2) ^ (sr>>1) ^ sr) & 1) << 31) |
         (sr >> 1);
    return (sr & 1);
}

DWORD WINAPI Random () {
    DWORD res = 0, loop;
    for (loop = 0; loop < 32; loop++)
        res = ((res<<1) | RandBit());
    return res;
}
saint_bxg
驱动小牛
驱动小牛
  • 注册日期2006-08-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望284点
  • 贡献值0点
  • 好评度257点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-10-15 17:17
谢谢分享
努力! 成功就在不远处....
supermanzeng
驱动牛犊
驱动牛犊
  • 注册日期2006-04-21
  • 最后登录2008-01-30
  • 粉丝0
  • 关注0
  • 积分110分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-01-09 11:42
谢谢楼主的分享!收藏了!
sdssly
驱动牛犊
驱动牛犊
  • 注册日期2003-03-04
  • 最后登录2016-01-09
  • 粉丝2
  • 关注0
  • 积分344分
  • 威望47点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-01-09 15:16
随便找一个libc的实现就可以了 里边有random函数的源代码 copy过来就可以了

但是你这个随机性不高,使用的那个GetTickCount每次reboot都会设置为0,我建议通过采集ADC或是直接访问CPU的timer寄存器来得到一个随机数的种子
游客

返回顶部