在C中创建自己的随机生成器

时间:2012-01-20 05:26:27

标签: c random

  

可能重复:
  Simple random number generator C

有人可以在C中发布您知道帮助的链接,以了解在C中创建用户定义的随机数生成器。我缺乏关于随机数生成器如何工作的基本概念。提供逻辑也有帮助。

1 个答案:

答案 0 :(得分:1)

作为伪随机数生成器的起点,请尝试查看linear feedback shift registers

这是c:

中4位LFSR的简单实现
char lfsr(char unshifted)
{
    char ret = 0;

    if( ( unshifted & 0x01 ) ^ ( ( unshifted & 0x02 ) >> 1) )
    {
        ret = (unshifted >> 1);
        ret = (ret | 0x08);
    }
    else
    {
        ret = (unshifted >> 1);
    }

    return ret;
}

因为寄存器具有有限数量的可能状态,所以它最终必须进入重复周期。但是,具有良好选择反馈功能的LFSR可以产生一系列比特,这些比特看起来是随机的,并且周期很长。