当前位置: 首页 > news >正文

智能优化算法(一):伪随机数的产生

文章目录

    • 1.伪随机数介绍
      • 1.1.伪随机产生的意义
      • 1.2.伪随机产生的过程
    • 2.产生U(0,1)的乘除同余法
      • 2.1.原始的乘同余法
      • 2.2.改进的乘同余法
    • 3.产生正态分布的伪随机数
    • 4.基于逆变法产生伪随机数

1.伪随机数介绍

1.1.伪随机产生的意义

  1.随机数的产生是进行随机优化的第一步也是最重要的一步,随机优化算法运行过程中需要大量随机数。
  2.传统手工方法:抽签,掷骰子,抽牌,摇号等,无法满足产生大量随机数的需求。
  3.伪随机数方法:利用计算机通过某些数学公式计算而产生,从数学意义上说不是随机的,但只要通过随机数的一系列统计检验,就可以作为随机数来使用。

1.2.伪随机产生的过程

   ∙ \bullet Step1:确定一个数学模型或某种规则。
   ∙ \bullet Step2:规定几个初始值。
   ∙ \bullet Step3:按照上述模型产生第一个随机数。
   ∙ \bullet Step4:用产生的上一个随机数作为新的初值,按照相同的步骤产生下一个随机数,重复之,得到一个伪随机数序列。

2.产生U(0,1)的乘除同余法

2.1.原始的乘同余法

  均匀的随机数的产生是生成其他随机数的基础,U(0,1)型随机数的产生主要是通过乘同余法进行设计生成,乘同余法的计算公式如下所示:
S k + 1 = ( A ⋅ S k ) m o d ( M ) S_{k+1}=(A\cdot S_k)\mathrm{~mod~}(M) Sk+1=(ASk) mod (M)
在公式中A表示整数常数, mod表示取模运算, M表示较大的整数

通过数论理论能够证明:
  当 M = 2 L ( L > 2 ) M=2^{L}(L>2) M=2L(L>2)时,若 A = 4 k + 1 或者 A = 8 k + 3 A=4k+1或者A=8k+3 A=4k+1或者A=8k+3,且 S 0 S_{0} S0为奇数时,可以获得的最长随机数序列长度为 2 L − 2 2^{L-2} 2L2.
  算法实现如下所示:

%% 伪随机数的生成1--乘同余法
%乘同余法
%设定参数
clc;
S0=1;
A=3;
L=4;
M=2^L;
s=S0;
% 循环计算
fprintf('参数A=%d,M=%d,s0=%d的乘除同余法计算结果如下:\n',A,M,S0)
%得到的随机数循环周期为2^(L=2)个
for i =1:2^(L-2)s=mod(A*s,M);fprintf('第%d个随机数为:%d\n', i,s);
end
%如果想产生U(0,1)则需要将求出的s/M即可。

2.2.改进的乘同余法

  对于普通的乘同余法只能获得周期为 2 L − 2 2^{L-2} 2L2的随机数序列,这是远远不够的,所以我们通过添加一个与M互为质数的C来使得乘同余法获得周期为 2 L 2^{L} 2L的随机数数列,这种方法就被称作混合同余法,计算公式如下所示:
S k + 1 = ( A ⋅ S k + C ) m o d ( M ) S_{k+1}=(A\cdot S_k+C)\mathrm{~mod~}(M) Sk+1=(ASk+C) mod (M)
  算法实现如下所示:

%% 伪随机数的生成2--混合乘同余法
%混合乘同余法
%设定参数
clc;
S0=1;
A=3;
L=4;
M=2^L;
s=S0;
C=3;
% 循环计算
fprintf('参数A=%d,M=%d,C=%d,S0=%d的乘除同余法计算结果如下:\n',A,M,C,S0)
%得到的随机数循环周期为2^(L)个
for i =1:2^(L)s=mod(A*s+C,M);fprintf('第%d个随机数为:%d\n', i,s);
end
%如果想产生U(0,1)则需要将求出的s/M即可。

3.产生正态分布的伪随机数

  产生正态分布的伪随机数的基本原理:若 Y 1 , Y 2 , Y 3 . . . . . . Y n Y_{1},Y_{2},Y_{3}......Y_{n} Y1,Y2,Y3......Yn 是独立同分布,均值和方差分别为 μ \mu μ σ \sigma σ ,且 n n n较大,则 X = Y 1 + Y 2 + Y 3 . . . . . . + Y n X=Y_{1}+Y_{2}+Y_{3}......+Y_{n} X=Y1+Y2+Y3......+Yn 近似于正态分布,且满足 μ x = μ 1 + μ 2 + μ 3 . . . . . + μ n = n μ \mu_{x}=\mu_{1}+\mu_{2}+\mu_{3}.....+\mu_{n}=n\mu μx=μ1+μ2+μ3.....+μn=nμ σ x 2 = σ 1 2 + σ 2 2 + σ 3 2 . . . . . + σ n 2 = n σ 2 \sigma_{x}^{2}=\sigma_{1}^{2}+\sigma_{2}^{2}+\sigma_{3}^{2}.....+\sigma_{n}^{2}=n\sigma_{}^{2} σx2=σ12+σ22+σ32.....+σn2=nσ2,即 x ∈ N ( n μ , n σ 2 ) x\in N( n \mu,n\sigma^{2}) xN(nμ,nσ2).
  于是正态分布可以由多个U(0,1)来近似。
  对于 Y ∈ U ( 0 , 1 ) Y\in U( 0,1) YU(0,1) 来说,对于Y的均值有:
μ y = 1 2 \mu_y=\frac12 μy=21
  对于Y的方差,计算如下所示:
σ y 2 = E ( Y 2 ) − ( E ( Y ) ) 2 = ∫ − ∞ + ∞ f ( y ) d y − ( 1 2 ) 2 = ∫ 0 1 y 2 d y − 1 4 = y 3 3 ∣ 1 0 − 1 4 = 1 12 \begin{aligned}\sigma_y^2&=E\color{r}{\left(Y^2\right)-\left(E(Y)\right)^2=\int_{-\infty}^{+\infty}f(y)dy-\left(\frac12\right)^2\\}=\int_0^1y^2dy-\frac14=\frac{y^3}3|\frac10-\frac14=\frac1{12}\end{aligned} σy2=E(Y2)(E(Y))2=+f(y)dy(21)2=01y2dy41=3y30141=121
  令 z = x − μ x σ x z=\frac{x-\mu_x}{\sigma_x} z=σxxμx,则 z ∈ N ( 0 , 1 ) z\in N(0,1) zN(0,1),则z的公式如下所所示:
z = ∑ y i − μ x σ x = ∑ y i − n μ y n σ y 2 = ∑ y i − n 2 n / 12 z=\frac{\sum y_i-\mu_x}{\sigma_x}=\frac{\sum y_i-n\mu_y}{\sqrt{n\sigma_y^2}}=\frac{\sum y_i-\frac n2}{\sqrt{n/_{12}}} z=σxyiμx=nσy2 yinμy=n/12 yi2n
  一般取n=12,则z的计算公式为:
z = ∑ i = 1 12 y i − 6 ∈ N ( 0 , 1 ) z=\sum_{i=1}^{12}y_i-6\in N(0,1) z=i=112yi6N(0,1)
  若想产生服从一般正态分布 N ( μ , σ 2 ) N(\mu,\sigma^{2}) N(μ,σ2) 的随机数x ,则只需产生 z ∈ N ( 0 , 1 ) z\in N(0,1) zN(0,1) ,再按公式 x = μ + σ z x=\mu+\sigma z x=μ+σz,即可获得 x ∈ N ( μ , σ 2 ) x\in N(\mu,\sigma^2) xN(μ,σ2).

  算法实现如下所示(取 n = 1200 n=1200 n=1200计算结果好):

%% 伪随机数的生成3--正态分布方法
%正态分布方法
%设定参数
clc
%生成12个U(0,1)分布的随机数就直接调用包来解决
N=1200;
for i=1:1000Y=rand(N,1);z=(sum(Y)-N*0.5)/sqrt(N/12);fprintf('第%d个属于N(0,1)的随机数为:%.2f\n',i,z)
end

4.基于逆变法产生伪随机数

  逆变法产生伪随机数的基本原理是设Y是(0,1)上均匀分布随机变量,F为任意一个连续分布函数,定义随机变量 X = F − 1 ( Y ) X=F^{-1}(Y) X=F1(Y),则 X具有分布函数F。
  证明如下:
F X ( a ) = P { X ≤ a } = P { F − 1 ( Y ) ≤ a } = P { Y ≤ F ( a ) } \begin{aligned}F_X(a)&=P\{X\leq a\}=P\{F^{-1}~(Y)\leq a\}=P\{Y\leq F(a)\}\end{aligned} FX(a)=P{Xa}=P{F1 (Y)a}=P{YF(a)}
  这里 Y ∈ U ( 0 , 1 ) Y\in U( 0,1) YU(0,1) ,有
f ( y ) = 1 , F ( y ) = P { Y ≤ y } = ∫ − ∞ y f ( y ) d y = y f(y)=1,\quad F(y)=P\{Y\leq y\}=\int_{-\infty}^yf(y)dy=y f(y)=1,F(y)=P{Yy}=yf(y)dy=y
  最后能够推出:
F X ( a ) = F ( a ) F_X(a)=F(a) FX(a)=F(a)
在这里插入图片描述

相关文章:

智能优化算法(一):伪随机数的产生

文章目录 1.伪随机数介绍1.1.伪随机产生的意义1.2.伪随机产生的过程 2.产生U(0,1)的乘除同余法2.1.原始的乘同余法2.2.改进的乘同余法 3.产生正态分布的伪随机数4.基于逆变法产生伪随机数 1.伪随机数介绍 1.1.伪随机产生的意义 1.随机数的产生是进行随机优化的第一步也是最重要…...

python 调用Oracle有返回参数的存储过程

python 调用Oracle有返回参数的存储过程 1. 存储过程 create or replace procedure pro_test_args(a in integer,b in integer, c out integer) is beginc: a * b ;end pro_test_args;2. Python调用存储过程 import cx_Oracle import os import sys# 连接数据库 #conn cx_O…...

700. 二叉搜索树中的搜索

原题链接700. 二叉搜索树中的搜索 思路: 给定的就是一个二叉搜索树 二叉搜索树是一个有序树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结…...

GO学习之 互斥锁、读写锁该如何取舍

GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Htt…...

Internet的特点

Internet是一个全球性的计算机网络系统,它将全世界各个地方已有的各种网络(如计算机网、数据通信网以及公用电话交换网等)互联起来,组成一个跨越国界范围的庞大的互联网,因此,也称为“网络的网络”。Internet在很短的时间内风靡全…...

Rust4.2 Common Collections

Rust学习笔记 Rust编程语言入门教程课程笔记 参考教材: The Rust Programming Language (by Steve Klabnik and Carol Nichols, with contributions from the Rust Community) Lecture 8: Common Collections fn main() {//Vectorlet mut v: Vec<i32> Vec::new();//…...

芸鹰蓬飞:抖音投流以后还有自然流量吗?

随着抖音平台的普及&#xff0c;企业和个人纷纷加入到这个短视频的热潮中。然而&#xff0c;一旦投入抖音投流&#xff0c;是否还能依赖自然流量&#xff1f;这是许多用户和品牌关心的问题。本文将深入剖析这一话题&#xff0c;探讨抖音投流与自然流量之间的关系。 一、抖音投…...

CTFhub-RCE-php://input

我们需要使用php://input来构造发送的指令 查看phpinfo&#xff0c;找到一下字段 证明是可以使用php://input 1. 使用Burpsuite抓包并转至Repeater 2. 构造包 方法&#xff1a;POST 目标&#xff1a;/?filephp://input Body&#xff1a;<?php system("ls /"…...

RISC-V处理器设计(五)—— 在 RISC-V 处理器上运行 C 程序

目录 一、前言 二、从 C 程序到机器指令 三、实验 3.1 实验环境 3.11 Windows 平台下环境搭建 3.12 Ubuntu 平台下环境搭建 3.13 实验涉及到的代码或目录 3.2 各文件作用介绍 3.2.1 link.lds 3.2.2 start.S 3.2.3 lib 和 include 目录 3.2.4 common.mk 3.2.5 demo …...

【PIE-Engine 数据资源】全球250米LAI产品

文章目录 一、 简介二、描述三、波段四、示例代码参考资料 一、 简介 数据名称全球250米LAI产品时间范围2015年空间范围全球数据来源北京师范大学肖志强教授团队代码片段var images pie.ImageCollection(“BNU/LAI/GLOBAL-250”) 二、描述 全球 250 米叶面指数产品由北京师范…...

vcomp120.dll丢失怎么办?vcomp120.dll丢失的解决方法分享

vcomp120.dll丢失”。这个错误通常会导致某些应用程序无法正常运行&#xff0c;给用户带来困扰。那么&#xff0c;当我们遇到这个问题时&#xff0c;应该如何修复呢&#xff1f;下面我将为大家介绍四个修复vcomp120.dll丢失的方法。 一、使用dll修复程序修复 可以通过百度或许…...

linux下使用Docker Compose部署Spug实现公网远程访问

&#x1f4d1;前言 本文主要是linux下使用Docker Compose部署Spug实现公网远程访问的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &am…...

【STM32 CAN】STM32G47x 单片机FDCAN作为普通CAN外设使用教程

STM32G47x 单片机FDCAN作为普通CAN外设使用教程 控制器局域网总线&#xff08;CAN&#xff0c;Controller Area Network&#xff09;是一种用于实时应用的串行通讯协议总线&#xff0c;它可以使用双绞线来传输信号&#xff0c;是世界上应用最广泛的现场总线之一。CAN协议用于汽…...

Apache Log4j2漏洞

Log4j2是一个Java日志组件,被各类Java框架广泛地使用。它的前身是Log4j,Log4j2重新构建和设计了框架,可以认为两者是完全独立的两个日志组件。本次漏洞影响范围为Log4j2最早期的版本2.0-beta9到2.15.0。Log4j2分为2个jar包,一个是接口log4j-api-${版本号}.jar,一个是具体实…...

超级干货:光纤知识总结最全的文章

你们好&#xff0c;我的网工朋友。 光纤已经是远距离有线信号传输的主要手段&#xff0c;而安装、维护光纤也是很多人网络布线的基本功。 在网络布线中&#xff0c;通常室外楼宇间幢与幢之间使用的是光缆&#xff0c;室内楼宇内部大都使用的是以太网双绞线&#xff0c;也有使用…...

PyCharm因安装了illuminated Cloud插件导致加载项目失败

打开Pycharm时会有弹窗提示&#xff1a; The license for Illuminated Cloud is invalid or has expired. All Illuminated Cloud features will be disabled. 这个弹窗会导致你加载项目一直失败&#xff0c;close project 也关不掉&#xff0c;我都是用任务管理器杀死进程的…...

微服务拆分的一些基本原则

文章首发公众号&#xff1a;海天二路搬砖工 单一职责原则 什么是单一职责原则 单一职责原则原本是面向对象设计中的一个基本原则&#xff0c;它指的是一个类只负责一项职责&#xff0c;不要存在多于一个导致类变更的原因。 在微服务架构中&#xff0c;一个微服务也应该只负…...

Ubuntu取消sudo的输入密码

Ubuntu最近要安装软件&#xff0c;每次sudo都要输入一次密码&#xff0c;感觉很麻烦&#xff0c;于是想能不能设置为不输入密码&#xff0c;在网上找了一下解决办法。 主要参考这篇文章&#xff1a; Ubuntu取消sudo时输入密码 上面这篇文章使用的是vim&#xff0c;但是按照博…...

基于ubuntu22.04手动安装openstack——2023.2版本(最新版)的问题汇总

前言&#xff1a;基本上按照openstack官方网站动手可以搭建成功&#xff08;如有需要私信发部署文档&#xff09;。 但是任然有些小问题&#xff0c;所以汇总如下。 第一个问题 问题&#xff1a; ubuntu搭建2023.2版本neutorn报错&#xff0c;ERROR neutron.plugins.ml2.driv…...

如何入门学习黑客技术?如何选择编程语言?如何选择适合黑客的操作系统?

‘ 一 ’ 了解黑客技术的基础知识 学习黑客技术需要对网络安全和计算机系统有一定的了解。可以通过参加安全培训班、阅读专业书籍和学术论文、浏览网络安全博客和论坛等方式获取基础知识。涉及的内容包括网络协议、操作系统原理、计算机网络和编程等。 ‘ 二 ’ 选择适合你的…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...