欢迎访问 外汇EA下载与MT4/MT5自动交易资源 - 聚合外汇EA、黄金EA、量化交易工具与自动化交易实战内容。
登录 注册

CRandom 类 - MetaTrader 5 库 | MT5 EA下载 - MetaTrader 5资源

author emer | 990 人阅读 | 0 人评论 |

Class CRandom - library for MetaTrader 5

Class CRandom - library for MetaTrader 5

Class CRandom - library for MetaTrader 5

Class CRandom - library for MetaTrader 5

Class CRandom - library for MetaTrader 5

MQL 中的标准随机数生成器的可能值数量相当有限,从 0 到 32767(可用 15 位,2^15 =32,768 个值)。

它被归类为线性同余生成器(LCG),被认为是非常基本的随机数生成器。

MQL 的实施数学兰德()可以在这里找到: https://www.mql5.com/en/docs/predefined/_randomseed

该生成器具有易于检测的统计缺陷,无法通过大多数随机性统计测试 实践兰德 测试套件。 

因此,MathRand() 不适合大规模蒙特卡罗模拟或高质量随机性至关重要的情况。 

PCG 是一个随机数生成器系列,速度快、统计性能好且代码量小。

http://www.pcg-random.org

该类是高质量 32 位 PCG 生成器的包装类。该 RNG 的输出范围为 2^32,这意味着它可以生成4,294,967,296 个可能值

置换同余生成器 (PCG) 是一种于 2014 年开发的伪随机数生成算法,它应用输出变换(随机移位或旋转)来消除随机数生成中的短周期问题。低位 这是其他 LCG 发电机所面临的问题。它通过小而快速的代码和较小的状态大小实现了出色的统计性能。

该类为随机数生成提供了一个简单的接口。

//+------------------------------------------------------------------+
//| CRandom 类                                                   |
//|用途:使用 32 位 PCG 生成器生成随机数。  |
//+------------------------------------------------------------------+
班级随机数
  {民众:
  //--- 构造函数和析构函数                C随机(空白);                                      // 构造函数(自动种子)                C随机(常量 乌龙初始化状态,常量 乌龙初始化);  // 构造函数(自定义种子)                                                                     
  //--- 生成随机数的方法                      整数          随机整数(空白);                                // 随机整数 [0,2147483648)  整数          随机整数(常量 整数最大限度);                        // 随机整数 [0,max)  整数          随机整数(常量 整数分钟,常量 整数最大限度);          // 随机整数 [最小值,最大值)                                                                     
  双倍的       随机双精度(空白);                                  // 随机双精度[0.0,1.0)  双倍的       随机双精度(常量 双倍的最大限度);                      // 随机双精度[0.0,max)  双倍的       随机双精度(常量 双倍的分钟,常量 双倍的最大限度);    // 随机双精度[最小值,最大值)                                                                     
  布尔值         随机布尔值(空白);                                // 随机真/假(等概率)  布尔值         随机布尔值(常量 双倍的概率真);              // 随机真/假(使用 prob_true)                                                                     
  双倍的       随机正态(空白);                                  // 随机双精度(正态分布)  双倍的       随机正态(常量 双倍的亩,常量 双倍的西格玛);    // 随机双精度(正态分布)  };


该图是针对从 0 到 10 的随机双数获得的

Class CRandom - library for MetaTrader 5

并且,该数字代表从 0 到 10 的随机整数

Class CRandom - library for MetaTrader 5

低阶位的 BITMAP 也显示出随机模式

Class CRandom - library for MetaTrader 5


附件下载

📎 pcg_demo.mq5 (5.96 KB)

📎 pcg_histogram.mq5 (12.24 KB)

📎 pcg_random_bitmap.mq5 (2.69 KB)

📎 mathrand_no_bias.mq5 (5.93 KB)

📎 random.mqh (25.26 KB)

Source: MQL5 #25843

🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录