`
CharlesCui
  • 浏览: 431226 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Erlang版的计算Mersenne(LucasLehmer)

阅读更多
-module(mersenne).
-export([run/1,mersenne/1,lucasLehmer_sequence/2]).

lucasLehmer_sequence (0, M) -> 4 rem M;
lucasLehmer_sequence (N, M) when N>0 ->
        erlang:round((math:pow(lucasLehmer_sequence(N-1,M),2)-2)) rem M.

mersenne(N) when N>0 ->
   erlang:round(math:pow(2,N))-1.

lucasLehmer_test(N) ->
   lucasLehmer_sequence(N - 2, mersenne(N)) =:=0.

run(2) ->
    case lucasLehmer_test(2) of
        true ->
                io:format("M(~w) => ~w~n", [2,mersenne(2)]);
        false ->
                1+1
    end;
run(N) ->
    case lucasLehmer_test(N) of
        true ->
                io:format("M(~w) => ~w~n", [N,mersenne(N)]);
        false ->
                1+1
    end,
    run(N-1).



分享到:
评论

相关推荐

    最好的随机数算法Mersenne twister^算法详解

    因此,后续出现了许多改进版,如SFMT(Slightly Faster Mersenne Twister)和PCG(Permuted Congruential Generator)等。 总的来说,Mersenne Twister算法是当前最常用的随机数生成器之一,它的高效性和统计特性使...

    Mersenne Twister 伪随机数生成算法

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

    并行Mersenne Twister算法

    - **性能优异**:相比于其他伪随机数生成器,Mersenne Twister在确保随机性的基础上实现了更高的计算效率。 Mersenne Twister的名字来源于其周期长度通常选择Mersenne质数,常见的两个变种分别是Mersenne Twister ...

    Mersenne Twister随机数产生

    利用Mersenne Twister算法产生随机数,并测试和分析了其随机性。 程序中还加入了界面显示。 各个文件为: initGenerator.m: initGenerator函数,用于初始化随机序列的长度和值 generateNum.m: generateNum函数,当...

    前端开源库-mersenne-twister

    3. **快速**:算法计算效率高,适用于实时需求和大规模计算。 **在前端应用:** 1. **测试和调试**:在前端开发中,随机数用于模拟用户行为、单元测试和集成测试。 2. **动画和图形**:在CSS动画、WebGL图形或游戏...

    mersenne twister-19937

    Mersenne Twister随机数发生器是目前常用的能快速产生高质量伪随机序列的发生器,就目前来看它一共有3个变种,分别是MT19937,MT19937-64,SFMT(或者DSFMT)。 相比较前人的LCG算法和GFSR算法(广义的反馈移位寄存器...

    改进的快速Mersenne twister随机数算法 非常适合做FPGA算法使用 随机性好

    在给定的标题和描述中,我们讨论的是一个针对FPGA(Field-Programmable Gate Array)应用进行了优化的改进版Mersenne Twister算法,具有更好的随机性和资源效率。 首先,Mersenne Twister的基本原理是基于Mersenne...

    计算π 考验你的计算机

    6. **分布式计算项目**:像Great Internet Mersenne Prime Search (GIMPS) 和“圆周率世界纪录”之类的项目,利用全球志愿者的计算机资源,共同计算π的更多位数。 7. **π的应用**:π在许多科学和工程领域都有...

    Mersenne Twister PRNG算法的Rust实现

    Mersenne Twister PRNG算法的Rust实现

    impact-plugin-mersenne-twister:Impact JS Mersenne Twister 插件

    Impact JS Mersenne Twister 插件 这个插件允许 yoy 使用 Mersenne Twister 生成伪随机数。 该插件基于 MT19937 算法,代码由 安装 作为子模块,从 git 命令行: git submodule add ...

    Entropy_Calculation_计算熵_entropycalculation_源码

    这些随机数可以来自于各种随机数生成器,如线性同余法、Mersenne Twister或硬件随机数生成器。 2. **概率计算**:对每个不同的随机数出现的次数进行计数,然后除以总数以得到其概率。 3. **熵计算**:使用上述熵的...

    mersenne_final.zip_Fortran_

    2. **Mersenne数计算**:一旦确认了p是素数,程序会计算2^p - 1的值。这可能通过循环或位操作来实现,对于大数计算,Fortran提供了内置的`INTEGER(KIND=*)`类型来处理。 3. **位数打印**:为了打印Mersenne数的所有...

    jisuan_可选加减乘除_自动生成计算题源码_

    这涉及到编程中的随机数生成算法,如线性同余法、Mersenne Twister等。 3. **条件语句与逻辑控制**:在选择运算符号时,程序需要有判断逻辑来决定使用哪种运算,这可能涉及到if-else语句或switch-case结构。 4. **...

    gpuowl:GPU Mersenne素数测试

    在过去的30年中,一个名为Great Internet Mersenne Prime Search(GIMPS)的长期分布式计算项目一直在寻找Mersenne Prime。 传统上涉及的算法是针对CPU实施的,但由于GPU令人印象深刻的强大功能和广泛的内存带宽,...

    mersenne-twister-recover:给定Mersenne Twister PNRG的至少624个输出,我们可以恢复其内部状态

    给定Mersenne Twister的至少624个输出,我们可以恢复其内部状态。 Mersenne Twister在许多编程语言(例如PHP,Python,Ruby等)中用作PRNG。有关详细说明,请参考 。 用法 只需将观察到的输出列表传递给go()方法:...

    C#数值计算算法编程.rar

    C#的Random类可以生成伪随机数,而更高级的如Mersenne Twister算法则提供更好的随机性。 9. **并行计算**:利用C#的多线程或Task并行库(TPL),可以加速大规模数值计算,尤其在现代多核处理器上。 10. **误差分析和...

    蒙特卡洛模拟计算pi值的c++实现,给不懂方法的人快速了解

    在本示例中,我们将探讨如何使用C++编程语言来实现蒙特卡洛模拟计算圆周率π的值。 **π值的计算** π是圆的周长与其直径之比,是数学中的一个基本常数,其精确值无法用有限的十进制或分数表示。然而,我们可以...

    mersenne-twister-predictor:根据前624个生成的数字预测MT19937 PRNG。 Python标准库的“随机”有专门的

    Mersenne Twister 预测器 根据前624个生成的数字预测MT19937 PRNG。 Python标准库的“随机”有一个专门化。 用法 安装 $ pip install mersenne-twister-predictor 作为图书馆 该库具有 CPython 标准random的特殊...

    C++计算圆周率.docx

    `std::random_device` 是一个非确定性的随机数生成器,用于初始化 `std::mt19937`,这是一种Mersenne Twister算法的实现,它能生成高质量的随机数序列。`std::uniform_real_distribution<>` 用于创建一个在[-1.0, ...

    计算方法的一个用例程序

    C语言标准库提供了一些随机数生成函数,如`rand()`,但高级应用可能需要更高质量的随机数生成器,如Mersenne Twister算法。 5. **误差分析**:计算方法中,理解和控制数值误差至关重要。舍入误差、截断误差和机器...

Global site tag (gtag.js) - Google Analytics