Random 伪随机数发生器项目

Random 伪随机数发生器项目,random,Random,我被要求设计和建立一个8位伪随机数发生器。我已经研究了可能的方法;使用背景噪音、用户输入等。我想知道是否有人能给我一些关于从哪里开始的建议,因为这对我会有很大帮助。也许是开始调查的最佳地点 下面应该让您从基础知识开始 对于一个简单的8位PRNG,你可以像一个。这在软件或硬件中都很容易实现。我的计划是使用温度传感器。在ADC中处理TEMP时,我将放大产生的噪声。然后,这将为我提供所需的随机8位数字,该数字将用作stdlib(C编程)中PRNG的“种子”。 你怎么看 我发现以下方法非常有效。这是

我被要求设计和建立一个8位伪随机数发生器。我已经研究了可能的方法;使用背景噪音、用户输入等。我想知道是否有人能给我一些关于从哪里开始的建议,因为这对我会有很大帮助。

也许是开始调查的最佳地点

下面应该让您从基础知识开始


  • 对于一个简单的8位PRNG,你可以像一个。这在软件或硬件中都很容易实现。

    我的计划是使用温度传感器。在ADC中处理TEMP时,我将放大产生的噪声。然后,这将为我提供所需的随机8位数字,该数字将用作stdlib(C编程)中PRNG的“种子”。
    你怎么看

    我发现以下方法非常有效。这是在MSP430汇编中实现的,但移植到另一个处理器非常容易。我曾用它为合成器项目生成“白”噪声,输出中没有可听见的模式。根据您的需求,这可能就足够了。它使用两个状态变量,前一个输出(8位)和一个16位状态寄存器。我在网上找到了这个,在AVR汇编中列出了它,并将它移植到MSP

    因为它使用移位,并将一个寄存器的顶部位移位到另一个寄存器的底部,所以它实际上不适合在C中进行有效的实现。我希望你觉得这和我一样有用

    mov.b &rand_out, r13
    mov.b r13,r12
    and.b #66, r13
    jz ClearCarry
    cmp.b #66, r13
    xor.w #1, sr ; invert carry flag
    jmp SkipClearCarry
      ClearCarry:
    clrc
      SkipClearCarry:
    rlc.w &rand_state
    rlc.b r12
    mov.b r12,&rand_out
    ret
    

    我已经看过了,并给RANDOM.org的创建者发了电子邮件。他建议看Knuth的作品,但他的书太贵了,我的知识或编程水平也远不及他的作品。@Gordon Seth-我用几个简单随机数的例子更新了我的帖子。这里有一些想法。