zoukankan      html  css  js  c++  java
  • 使用kbmmw中的随机数替换delphi 10.3 自带的随机数

    我们在开发中经常会使用随机数模拟各种随机条件,例如生成唯一的密码和令牌。

    在计算机中,一般采用PRNG(伪随机序列发生器)模拟真实随机数。既然是随机,就要要没有任何规律,

    在取值范围内均匀、独立。以确保尽量不重复。否则生成的密码和令牌碰撞的几率就非常大。

    delphi自带的随机数函数,看似随机,实际上当产生次数足够多的话,就会发现重复性非常大,而且向中心域

    集中。如果我们用delphi自带的随机数生成一个区域的点,就会很方便的发现这个问题。

    kbmmw 5.8里面 提供了好几种流行的随机数生成实现。例如PCG、 Mersenne Twister、SplitMix、Xoroshiro等。

    甚至提供了几个利用CPU 自身功能生成伪随机数的函数。

    我们可以明显的看出来,这两个图中的点非常随机、均匀。因此,我们在开发中尽量使用kbmmw 提供的随机函数。

    喜大普奔,delphi10.3 里面提供了可替换随机数生成的功能。

    我们可以很方便的让delphi 不用更改代码(或者没有代码的情况一下),就可以享受这些好的功能和算法。

    首先,我们做一个函数,当然记住要引用kbmMWRandom。

    function xalionrandom32:UInt32;
    begin result:= kbmMWRandom32.Random;
    
    end;

    然后在工程文件里面加上三行。

     Application.Initialize;
    //加上这三行
      {$IF CompilerVersion >= 33}
         Random32Proc:= xalionrandom32;
      {$ENDIF}

    ok, 我们的程序就可以享受这个福利了。

  • 相关阅读:
    安装 Visual Studio 出现网络问题,无法连接
    开机时如何默认关闭小键盘
    nginx 443端口配置
    nginx启动提示 nginx: [emerg] the INET6 sockets are not supported on this platfor
    ffmpeg 常用命令
    linux下安装python3.7.2
    Win10的Hyper-V虚拟机上安装Ubuntu后显示分辨率问题
    Hyper-V安装CentOS修改分辨率
    Linux 设置简单密码
    nginx 80端口跳转到443
  • 原文地址:https://www.cnblogs.com/xalion/p/10460353.html
Copyright © 2011-2022 走看看