`
小小龙猫
  • 浏览: 98357 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

线性同余算法,伪随机数

阅读更多

线性同余法求伪随机数的公式:
X(n+1) = (a Xn + c) mod m

公式中 0 < m , 0<=a<m, 0<c<m,  0<=X(0)<m

公式主要用到递归方法得到模除后的伪随机数,从X(0)到X(n),每一项都只依赖于前面一项,X序列将产生m个不同的数,然后重复。

 

int rand(unsigned int seed)
{
   return (unsigned int)(seed * 1103515245 + 12345) % 32768;
}



int main()
{
     int x=12,i=0;

     for(i;i<100;i++)
     {
        x = rand(x);
        printf("%d,",x);   
     }
     
     return 0;
}
 
1
3
分享到:
评论

相关推荐

    线性同余伪随机数生成器

    线性同余伪随机数生成器作为一项经典的算法,虽然有其局限性,但在许多场合下仍能提供足够的随机性。通过合理选择参数,LCG 能够生成长周期且看起来随机的数列,满足大部分随机数需求。然而,对于更高要求的随机性,...

    suijishu.rar_伪随机_伪随机数_线性同余_随机数产生_随机数生成

    "suijishu.rar" 文件集合着重探讨了伪随机数生成,特别是线性同余法这一经典算法。让我们深入了解一下这个主题。 首先,什么是伪随机数?在实际应用中,由于真正的随机数难以获取,我们通常使用伪随机数,它们是由...

    matlab平方取中法、线性同余法、组合发生器生成三种伪随机数

    matlab平方取中法、线性同余法、组合发生器生成三种伪随机数,并进行均匀性检验

    伪随机数生成算法及比较.pdf

    同余法使用线性递推公式,通过选择合适的参数和初值,可以生成周期较长、统计性质良好的伪随机数序列。文档指出,混合同余法和乘同余法是同余法中表现最好的算法。 伪随机数生成算法的好坏通常根据它们的周期长度、...

    Mersenne Twister 伪随机数生成算法

    Mersenne Twister算法译为马特赛特旋转演算法,是伪随机数发生器之一,其主要作用是生成伪随机数。此算法是Makoto Matsumoto (松本)和Takuji Nishimura (西村)于1997年开发的,基于有限二进制字段上的矩阵线性再生。...

    易语言伪随机数生成原理

    伪随机数生成器的性能和随机性至关重要,因此,易语言可能会采用一些优化策略,如使用高质量的线性同余公式,或者结合其他算法,如Mersenne Twister,以提高随机数的均匀性和周期长度。 在易语言的伪随机数生成原理...

    伪随机数的生成

    伪随机数是指由确定性算法产生的序列,该序列具有随机性特征但实际是由特定算法生成的,并非真正的随机数。伪随机数在密码学、计算机科学、游戏开发等领域有着广泛的应用。 #### 二、需求分析与设计目标 根据题目...

    基于DSP的任意长度伪随机序列产生方法

    线性同余算法是生成伪随机数的经典方法,其核心公式为:Xn+1 = (aXn + b) mod M。在这个公式中,a、b和X0分别是乘数、加数和初始值(种子),而M是模数,决定了生成序列的长度。当模数M等于2的n次幂时,生成的序列会...

    二维联合正态分布伪随机数生成算法的研究与实现

    - **线性同余法**:这是一种基于线性方程式的伪随机数生成方法,具有简单易实现的特点。 - **平方取中法**:这种方法通过将一个数平方后取中间几位作为新的随机数来生成序列。 - **取小数法**:通过对某些数值进行除...

    伪随机数MATLAB版

    伪随机数并非真正的随机数,因为它们是由确定性的算法生成的,但这些算法设计得使得生成的数列在统计上具有随机性,满足特定的概率分布。 在MATLAB中,`ran`函数用于生成0-1之间的均匀分布的伪随机数。函数内部通过...

    产生伪随机数

    接下来,我们编写一个自定义的`my_rand()`函数,该函数执行上述线性同余方程,并根据需要截取中间部分作为伪随机数。 例如,如果我们选择\( a = 1103515245 \),\( c = 12345 \),\( M = 2^31 - 1 \),代码可能...

    8位单片机产生伪随机数的算法(6502版)[参考].pdf

    本文将介绍一种使用线性叠加法实现伪随机数生成的算法,并对其原理和实现进行详细的解释。 伪随机数函数的原理 伪随机数函数的原理基于线性叠加法。该算法使用两个常数A和C,通过乘法和加法操作生成伪随机数。具体...

    伪随机数算法源代码实现

    - **定义**:一种常用的伪随机数生成算法,基于线性同余公式:`Xn+1 = (aXn + c) mod m`。 - **参数解释**: - `Xn`:当前值。 - `Xn+1`:下一个值。 - `a`:乘子。 - `c`:增量。 - `m`:模数。 - **特点**...

    基于CUDA平台的伪随机数产生器系统研究1

    该方法可以大幅提高伪随机数产生的速度,解决传统线性同余算法产生伪随机数周期短、速度较慢的问题。 CUDA 平台的体系结构是基于 NVIDIA 的 GPU 架构,提供了一个完整的编程模型和开发环境,允许开发者使用 C 语言...

    关于乘法线性同余数列产生器.rar

    乘法线性同余数列(Multiplicative Linear Congruential Generator,简称MLCG)是一种广泛应用于伪随机数生成器(Pseudo-Random Number Generator,PRNG)中的算法。这种算法基于数学上的线性同余方程,具有计算简单...

    伪随机数产生程序

    在计算机科学中,伪随机数生成器(PRNG)是一种算法,它能够产生一系列看起来随机但实际上可预测的数字序列。这种数字序列对于许多应用来说非常有用,比如在模拟和游戏开发中,因为它们能提供一致但看似无规律的结果...

    伪随机数生成算法及比较

    通过对几种伪随机数生成算法的介绍与比较,我们可以得出结论:在实际应用中,同余法尤其是混合同余法和乘同余法因其优良的性能成为了优选方案。然而,不同的应用场景可能对随机数有不同的需求,因此在具体应用时还...

    java伪随机数

    这个类使用线性同余生成算法来产生伪随机数。下面是Random类中生成伪随机数的关键知识点: 1. 构造函数:Random类提供了无参构造函数和带种子的构造函数。使用无参构造函数时,系统会自动提供一个种子(通常基于...

Global site tag (gtag.js) - Google Analytics