数学建模十大算法01-蒙特卡洛算法(Monte Carlo)

2023-11-18


蒙特卡洛方法也称为 计算机随机模拟方法,它源于世界著名的赌城——摩纳哥的Monte Carlo(蒙特卡洛)。它是基于对大量事件的统计结果来实现一些确定性问题的计算。使用蒙特卡洛方法必须使用计算机生成相关分布的随机数,Matlab给出了生成各种随机数的命令,常用的有 rand函数unifrnd

一、生成随机数

1.1 rand

rand函数可用于产生由(0,1)之间均匀分布的随机数或矩阵。
Y = rand(n) 返回一个n×n的随机矩阵。
Y = rand(m,n)Y = rand([m n]) 返回一个m×n的随机矩阵。
在这里插入图片描述

Y = rand(m,n,p,...)Y = rand([m n p...]) 产生随机数组。
在这里插入图片描述

Y = rand(size(A)) 返回一个和A有相同尺寸的随机矩阵。
在这里插入图片描述

1.2 unifrnd

unifrnd 生成一组(连续)均匀分布的随机数。
R = unifrnd(A,B) 生成被A和B指定上下端点[A,B]的连续均匀分布的随机数组R。
如果A和B是数组,R(i,j)是生成的被A和B对应元素指定连续均匀分布的随机数。
在这里插入图片描述

R = unifrnd(A,B,m,n,...)R = unifrnd(A,B,[m,n,...])
如果A和B是标量,R中所有元素是相同分布产生的随机数。
如果A或B是数组,则必须是mn…数组。
在这里插入图片描述

1.3 联系与区别

相同点:

  • 二者都是利用rand函数进行随机值计算。
  • 二者都是均匀分布。

【例】在区间[5,10]上生成400个均匀分布的随机数。
在这里插入图片描述

不同点:

  • unifrnd是统计工具箱中的函数,是对rand的包装。不是Matlab自带函数无法使用JIT加速。
  • rand函数可以指定随机数的数据类型。

二、引入

2.1 引例

为了求得圆周率 π 值,在十九世纪后期,有很多人作了这样的试验:将长为 l l l 的一根针任意投到地面上,用针与一组相间距离为 a ( l < a ) a( l<a) ala的平行线相交的频率代替概率P,再利用准确的关系式: p = 2 l π a p=\frac{2l}{\pi a} p=πa2l ,求出 π 值。(布丰投针

在这里插入图片描述
注意:当针和平行线相交时有,针的中点x与针与直线的夹角φ满足 x ≤ 1 2 s i n φ x≤\frac{1}{2}sinφ x21sinφ

l =  0.520;     % 针的长度(任意给的)
a = 1.314;    % 平行线的宽度(大于针的长度l即可)
n = 1000000;    % 做n次投针试验,n越大求出来的pi越准确
m = 0;    % 记录针与平行线相交的次数
x = rand(1, n) * a / 2 ;   %[0, a/2]内服从均匀分布随机产生n个数, x中每一个元素表示针的中点和最近的一条平行线的距离
phi = rand(1, n) * pi;    %[0, pi]内服从均匀分布随机产生n个数,phi中的每一个元素表示针和最近的一条平行线的夹角
% axis([0,pi, 0,a/2]);   box on;  % 画一个坐标轴的框架,x轴位于0-pi,y轴位于0-a/2, 并打开图形的边框
for i=1:n  % 开始循环,依次看每根针是否和直线相交
    if x(i) <= l / 2 * sin(phi (i))     % 如果针和平行线相交
        m = m + 1;    % 那么m就要加1
%         plot(phi(i), x(i), 'r.')   % 模仿书上的那个图,横坐标为phi,纵坐标为x , 用红色的小点进行标记
%         hold on  % 在原来的图形上继续绘制
    end
end
p = m / n;    % 针和平行线相交出现的频率
mypi = (2 * l) / (a * p);  % 我们根据公式计算得到的pi
disp(['蒙特卡罗方法得到pi为:', num2str(mypi)])

在这里插入图片描述
由于一次模拟的结果具有偶然性,因此我们可以重复100次后再来求一个平均的pi,这样子得到的结果会更接近真实的pi值。

result = zeros(100,1);  % 初始化保存100次结果的矩阵
l =  0.520;     a = 1.314;
n = 1000000;    
for num = 1:100  % 重复100次求平均pi
    m = 0;  
    x = rand(1, n) * a / 2 ;
    phi = rand(1, n) * pi;
    for i=1:n
        if x(i) <= l / 2 * sin(phi (i))
            m = m + 1;
        end
    end
    p = m / n;
    mypi = (2 * l) / (a * p);
    result(num) = mypi;  % 把求出来的myphi保存到结果矩阵中
end
mymeanpi = mean(result);  % 计算result矩阵中保存的100次结果的均值
disp(['蒙特卡罗方法得到pi为:', num2str(mymeanpi)])
2.2 基本思想
  • 当所求问题的解是某个事件的概率,或者是某个随机变量的数学期望,或者是与概率,数学期望有关的量时,通过某种试验的方法,得出该事件发生的概率,或者该随机变量若干个具体观察值的算术平均值,通过它得到问题的解
  • 当随机变量的取值仅为1或0时,它的数学期望就是某个事件的概率。或者说,某种事件的概率也是随机变量(仅取值为1或0)的数学期望。
2.3 优缺点

优点: (可以求解复杂图形的积分、定积分,多维数据也可以很快收敛)
1、能够比较逼真地描述具有随机性质的事物的特点及物理实验过程
2、受几何条件限制小
3、收敛速度与问题的维数无关
4、具有同时计算多个方案与多个未知量的能力
5、误差容易确定
6、程序结构简单,易于实现

缺点:
1、收敛速度慢
2、误差具有概率性
3、在粒子输运问题中,计算结果与系统大小有关

主要应用范围:

1、粒子输运问题(实验物理,反应堆物理)
2、统计物理
3、典型数学问题
4、真空技术
5、激光技术
6、医学
7、生物
8、探矿
……

注:所以在使用蒙特卡罗方法时,要“扬长避短”,只对问题中难以用解析(或数值)方法处理的部分,使用蒙特卡罗方法计算,对那些能用解析(或数值)方法处理的部分,应当尽量使用解析方法。

蒙特卡洛算法,采样越多,越接近最优解。(尽量找好的,但是不保证是最好的),它与拉斯维加斯算法的对比可参考:蒙特卡罗算法 与 拉斯维加斯算法

三、实例

3.1 蒙特卡洛求解积分

θ = ∫ a b f ( x ) d x \theta=\int_a^b f(x) d x θ=abf(x)dx
在这里插入图片描述
步骤如下:

  1. 在区间[a,b]上利用计算机均匀的产生n个随机数(可用matlab的unifrnd实现)
  2. 计算每一个随机数相对应的函数值f(x1)、f(x2)、f(xn)
  3. 计算被积函数值的平均值
3.2 简单的实例

【例】 求π的值。

N = 1000000;    % 随机点的数目
x = rand(N,1);  % rand 生成均匀分布的伪随机数。分布在(0~1)之间
y = rand(N,1);  % 矩阵的维数为N×1
count = 0;
for i = 1:N
   if (x(i)^2+y(i)^2 <= 1)
     count = count + 1;
    end
end
PI = 4*count/N

正方形内部有一个相切的圆,它们的面积之比是π/4。现在,在这个正方形内部,随机产生1000000个点(即1000000个坐标对 (x, y)),计算它们与中心点的距离,从而判断是否落在圆的内部。如果这些点均匀分布,那么圆内的点应该占到所有点的 π/4,因此将这个比值乘以4,就是π的值。
在这里插入图片描述

在这里插入图片描述
【例】 计算定积分 ∫ 0 1 x 2 d x \int_{0}^{1} x^{2} d x 01x2dx
计算函数 y = x 2 x^{2} x2在 [0, 1] 区间的积分,就是求出红色曲线下面的面积。这个函数在 (1,1) 点的取值为1,所以整个红色区域在一个面积为1的正方形里面。在该正方形内部,产生大量随机点,可以计算出有多少点落在红色区域(判断条件 y < x 2 x^{2} x2)。这个比重就是所要求的积分值。
在这里插入图片描述

N = 10000;  
x = rand(N,1); 
y = rand(N,1);
count = 0;
for i = 1:N
   if (y(i) <= x(i)^2)
     count = count + 1;
   end
end
result = count/N

在这里插入图片描述

蒙特卡洛算法对于涉及不可解析函数概率分布的模拟及计算是个有效的方法。

【例】 套圈圈问题。(Python代码)
在这里插入图片描述
在这里,我们设物品中心点坐标为(0,0),物品半径为5cm。

import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import numpy as np
import sys
circle_target = mpatches.Circle([0, 0], radius=5, edgecolor='r', fill=False)
plt.xlim(-80, 80)
plt.ylim(-80, 80)
plt.axes().add_patch(circle_target)  # 在坐标轴里面添加圆
plt.show()

在这里插入图片描述
设投圈半径8cm,投圈中心点围绕物品中心点呈二维正态分布,均值μ=0cm,标准差σ=20cm,模拟1000次投圈过程。

N = 1000  # 1000次投圈
u, sigma = 0, 20  # 投圈中心点围绕物品中心呈二维正态分布,均值为0,标准差为20cm
points = sigma * np.random.randn(N, 2) + u
plt.scatter([x[0] for x in points], [x[1] for x in points], c=np.random.rand(N), alpha=0.2)

图中红圈为物品,散点图为模拟1000次投圈过程中,投圈中心点的位置散布。
注:上图中红圈为物品,散点图为模拟1000次投圈过程中,投圈中心点的位置散布。

然后,我们来计算1000次投圈过程中,投圈套住物品的占比情况。

print(len([xy for xy in points if xy[0] ** 2 + xy[1] ** 2 < (8-5) ** 2]) / N)  # 物品半径为5cm,投圈半径为8cm,xy是一个坐标

输出结果为:0.015
代表投1000次,只有15次能够套住物品,这是小概率事件,知道我们为什么套不住了吧~

3.3 书店买书(0-1规划问题)

在这里插入图片描述
解:设 i = 1 , 2... , 6 i=1,2...,6 i=1,2...,6 表示ABCDEF六家商城, j = 1 , 2... , 5 j=1,2...,5 j=1,2...,5 表示B1、B2…B5五本书。记 m i j m_{i j} mij 为第 j j j 本书在第 i i i 家店的售价, q i q_{i} qi 表示第 i i i 的运费。引入0-1变量 x i j x_{i j} xij 如下:
在这里插入图片描述
那么,我们的目标函数就是总花费,包括两个方面:1)五本书总价格;2)运费。

书价 = ∑ j = 1 5 [ ∑ i = 1 6 ( x i j ⋅ m i j ) ] 书价 = \sum_{j=1}^{5}\left[\sum_{i=1}^{6}\left(x_{i j} \cdot m_{i j}\right)\right] 书价=j=15[i=16(xijmij)]

在这里插入图片描述

书店买书问题的蒙特卡罗的模拟代码实现:
在这里插入图片描述

%% 代码求解
min_money = +Inf;  % 初始化最小的花费为无穷大,后续只要找到比它小的就更新
min_result = randi([1, 6],1,5);  % 初始化五本书都在哪一家书店购买,后续我们不断对其更新
%若min_result = [5 3 6 2 3],则解释为:第1本书在第5家店买,第2本书在第3家店买,第3本书在第6家店买,第4本书在第2家店买,第5本书在第3家店买  
n = 100000;  % 蒙特卡罗模拟的次数
M = [18	 39	29	48	59
        24	45	23	54	44
        22	45	23	53	53
        28	47	17	57	47
        24	42	24	47	59
        27	48	20	55	53];  % m_ij  第j本书在第i家店的售价
freight = [10 15 15 10 10 15];  % 第i家店的运费
for k = 1:n  % 开始循环
    result = randi([1, 6],1,5); %1-6这些整数中随机抽取一个1*5的向量,表示这五本书分别在哪家书店购买
    index = unique(result);  % 在哪些商店购买了商品,因为我们等下要计算运费
    money = sum(freight(index)); % 计算买书花费的运费
    % 计算总花费:刚刚计算出来的运费 + 五本书的售价
    for i = 1:5   
        money = money + M(result(i),i);  
    end
    if money < min_money  % 判断刚刚随机生成的这组数据的花费是否小于最小花费,如果小于的话
        min_money = money  % 我们更新最小的花费
        min_result = result % 用这组数据更新最小花费的结果
    end
end

循环执行的过程如下所示:
在这里插入图片描述
最终得到的最小花费为189元,方案为第一本书在第1家店买,第二本书在第1家店买,第三本书在第4家店买,第四本书在第1家店买,第五本书在第4家店买。

3.4 旅行商问题(TSP)

一个售货员必须访问n个城市,这n个城市是一个完全图,售货员需要恰好访问所有城市一次,并且回到最终的城市。城市与城市之间有一个旅行费用,售货员希望旅行费用之和最少。
在这里插入图片描述
如图所示的完全图旅行费用最小时的路径为:城市1→城市3→城市2→城市4→城市1

案例代码实现:
在这里插入图片描述

% 只有10个城市的简单情况
 coord =[0.6683 0.6195 0.4 0.2439 0.1707 0.2293 0.5171 0.8732 0.6878 0.8488 ;
               0.2536 0.2634 0.4439 0.1463 0.2293 0.761  0.9414 0.6536 0.5219 0.3609]' ;  % 城市坐标矩阵,n行2% 38个城市,TSP数据集网站(http://www.tsp.gatech.edu/world/djtour.html) 上公测的最优结果6656。
 % coord = [11003.611100,42102.500000;11108.611100,42373.888900;11133.333300,42885.833300;11155.833300,42712.500000;11183.333300,42933.333300;11297.500000,42853.333300;11310.277800,42929.444400;11416.666700,42983.333300;11423.888900,43000.277800;11438.333300,42057.222200;11461.111100,43252.777800;11485.555600,43187.222200;11503.055600,42855.277800;11511.388900,42106.388900;11522.222200,42841.944400;11569.444400,43136.666700;11583.333300,43150.000000;11595.000000,43148.055600;11600.000000,43150.000000;11690.555600,42686.666700;11715.833300,41836.111100;11751.111100,42814.444400;11770.277800,42651.944400;11785.277800,42884.444400;11822.777800,42673.611100;11846.944400,42660.555600;11963.055600,43290.555600;11973.055600,43026.111100;12058.333300,42195.555600;12149.444400,42477.500000;12286.944400,43355.555600;12300.000000,42433.333300;12355.833300,43156.388900;12363.333300,43189.166700;12372.777800,42711.388900;12386.666700,43334.722200;12421.666700,42895.555600;12645.000000,42973.333300];

n = size(coord,1);  % 城市的数目

figure(1)  % 新建一个编号为1的图形窗口
plot(coord(:,1),coord(:,2),'o');   % 画出城市的分布散点图
for i = 1:n
    text(coord(i,1)+0.01,coord(i,2)+0.01,num2str(i))   % 在图上标上城市的编号(加上0.01表示把文字的标记往右上方偏移一点)
end
hold on % 等一下要接着在这个图形上画图的


d = zeros(n);   % 初始化两个城市的距离矩阵全为0
for i = 2:n  
    for j = 1:i  
        coord_i = coord(i,:);   x_i = coord_i(1);     y_i = coord_i(2);  % 城市i的横坐标为x_i,纵坐标为y_i
        coord_j = coord(j,:);   x_j = coord_j(1);     y_j = coord_j(2);  % 城市j的横坐标为x_j,纵坐标为y_j
        d(i,j) = sqrt((x_i-x_j)^2 + (y_i-y_j)^2);   % 计算城市i和j的距离
    end
end
d = d+d';   % 生成距离矩阵的对称的一面

min_result = +inf;  % 假设最短的距离为min_result,初始化为无穷大,后面只要找到比它小的就对其更新
min_path = [1:n];   % 初始化最短的路径就是1-2-3-...-n
N = 10000;  % 蒙特卡罗模拟的次数,清风老师设的次数为10000000,这里我为了快速得到结果,改为10000
for i = 1:N  % 开始循环
    result = 0;  % 初始化走过的路程为0
    path = randperm(n);  % 生成一个1-n的随机打乱的序列
    for i = 1:n-1  
        result = d(path(i),path(i+1)) + result;  % 按照这个序列不断的更新走过的路程这个值
    end
    result = d(path(1),path(n)) + result;  % 别忘了加上从最后一个城市返回到最开始那个城市的距离
    if result < min_result  % 判断这次模拟走过的距离是否小于最短的距离,如果小于就更新最短距离和最短的路径
        min_path = path;
        min_result = result
    end
end

在运行过程中,我们选择查看min_result的变化:
在这里插入图片描述

最终得到的路径(不一定是最优的路径)为:
在这里插入图片描述
图中显示最短路径:

min_path = [min_path,min_path(1)];   % 在最短路径的最后面加上一个元素,即第一个点(我们要生成一个封闭的图形)
n = n+1;  % 城市的个数加一个(紧随着上一步)
for i = 1:n-1 
     j = i+1;
    coord_i = coord(min_path(i),:);   x_i = coord_i(1);     y_i = coord_i(2); 
    coord_j = coord(min_path(j),:);   x_j = coord_j(1);     y_j = coord_j(2);
    plot([x_i,x_j],[y_i,y_j],'-')    % 每两个点就作出一条线段,直到所有的城市都走完
    pause(0.5)  % 暂停0.5s再画下一条线段
    hold on
end

在这里插入图片描述

参考文献

[1] 数学建模——蒙特卡罗算法(Monte Carlo Method)
[2] 数学建模之蒙特卡洛算法
[3] 蒙特卡洛方法到底有什么用?
[4] 数学建模 | 蒙特卡洛模拟方法 | 详细案例和代码解析(清风课程) ★★推荐

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数学建模十大算法01-蒙特卡洛算法(Monte Carlo) 的相关文章

  • Matlab Solve():未给出所有解决方案

    我试图找到两条曲线的交点 syms x y g x 20 exp x 30 3 5 1 sol x sol y solve x 22 3097 2 y 16 2497 2 25 y g x x y Real true 它只提供一种解决方案
  • 如何加载具有可变文件名的 .mat 文件?

    select all mat files oar dir oar mat n oar name loop through files for l 1 length oar load pat oar l lt this is the mat
  • 检查图像中是否有太薄的区域

    我正在尝试验证雕刻机的黑白图像 更多的是剪贴画图像 不是照片 我需要考虑的主要事情之一是区域的大小 或线条的宽度 因为机器无法处理太细的线条 所以我需要找到比给定阈值更细的区域 以此图为例 竖琴的琴弦可能太细而无法雕刻 我正在阅读有关 Ma
  • 动态调整自定义刻度数

    Taking SO 的一个例子 https stackoverflow com a 7139485 97160 我想根据当前视图调整轴刻度 这是默认行为 除非设置自定义的刻度数 下图展示了由此产生的行为 左侧是默认行为 右侧是带有自定义刻度
  • 如何为已编译的 MATLAB 创建安装程序并要求用户接受我们的许可条款?

    我正在 MATLAB 中编写程序分发给 Windows 用户 我使用 MATLAB 编译器和 MATLAB r2014a 版本来创建程序 我可以使用 MATLAB 应用程序编译器创建 Windows 安装程序 并且它的工作效果可以接受 但是
  • 如何在向量中的所有点之间绘制线?

    我有一个包含二维空间中一些点的向量 我希望 MATLAB 用从每个点到每个其他点绘制的线来绘制这些点 基本上 我想要一个所有顶点都连接的图 你能用情节来做到这一点吗 如果可以 怎么做 一种解决方案是使用该函数为每个点组合创建一组索引MESH
  • Matlab 一个图上有多个图例 2014b

    我想在一个地块上有多个传说 该解决方案在 2014b 版本之前完美运行 我试图弄清楚如何使用手柄优雅地制作它 但到目前为止还没有成功 欢迎任何想法 2013b 的示例 x 1 50 y1 sin x 2 y2 cos x 2 f figur
  • 在 MATLAB 中模拟 C++ 模板

    我试图找出创建 C 模板或 Java 通用对象的替代方案的最佳方法 出于多种不同的原因 我过去曾多次想这样做 但现在我想做的是为几个相关的类创建 saveobj 和 loadobj 函数 我的想法是 我想要一组通用的例程来创建默认结构 然后
  • 如何正确从表中删除 NaN 值

    在 Matlab 中阅读 Excel 电子表格后 不幸的是 我的结果表中包含了 NaN 例如这个 Excel 表格 将产生此表 其中出现额外的 NaN 列 我尝试使用以下代码片段删除 NaN measurementCells readtab
  • for 循环中的绘图没有可见点

    我正在努力解决我想使用 for 循环制作的情节 我知道当我在循环之后添加它时它会起作用 只是一个简单的图 但我想用另一种方式尝试一下 fib ones 1 10 for k 3 10 hold on fib k fib k 1 fib k
  • 以 2 为底的矩阵对数

    Logm 取矩阵对数 并且log2 取矩阵每个元素以 2 为底的对数 我正在尝试计算冯 诺依曼熵 它涉及以 2 为底的矩阵对数 我该怎么做呢 如果将 以 2 为底 的矩阵指数定义为B expm log 2 A 或者如果您类似地通过特征分解直
  • 如何在 MATLAB 编译的应用程序中运行外部 .m 代码? [复制]

    这个问题在这里已经有答案了 我有一个 MATLAB 项目 我使用 MCC 对其进行编译以获得单个可执行文件 然后我想知道外部程序员是否可以在 exe 中执行他的一些 m 文件 而无需重新编译整个项目 重点是提供一个应用程序 其他开发人员可以
  • 将 kinect RGB 和深度值转换为 XYZ 坐标

    我正在寻找一种简单的方法将 kinect RGB 和深度值转换为 XYZ 坐标 使用 MATLAB 我的目标是一个输入为以下内容的函数 每个点的 RGB 和深度值Kinect相机 并输出 每个点的 x y 和 z 值 RGB 深度 RGB
  • 通过多次合并相同的行向量来构建矩阵

    有没有一个matlab函数可以让我执行以下操作 x 1 2 2 3 然后基于x我想建立矩阵m 1 2 2 3 1 2 2 3 1 2 2 3 1 2 2 3 您正在寻找REPMAT http www mathworks com help t
  • 将向量(或弧)绘制到玫瑰图上。 MATLAB

    我有两个数据集 其中详细列出了angles 我正在绘制玫瑰图 angles 0 8481065519 0 0367932161 2 6273740453 n 另一个 从这组角度详细说明方向统计 angle error 0 848106563
  • 在 Matlab 中保存 Kinect 深度图像?

    通过使用 Kinect 我可以获得深度图像 其中每个深度图像像素存储相机和物体之间的距离 以毫米为单位 现在我想保存它们以便以后使用 最好的推荐是什么 我正在考虑将深度图像保存为图像 jpg png等 然而 该值通常是从50毫米到10000
  • 图像梯度角计算

    我实际上是按照论文的说明进行操作的 输入应该是二进制 边缘 图像 输出应该是一个新图像 并根据论文中的说明进行了修改 我对指令的理解是 获取边缘图像的梯度图像并对其进行修改 并使用修改后的梯度创建一个新图像 因此 在 MATLAB Open
  • Mathworks 生成 Matlab HTML 文档的方法是什么?

    我正在开发共享的 Matlab 代码 我们希望在本地网络中将生成的文档作为可搜索的 HTML 文档共享 我知道以下生成文档的方法 编写一个类似于 C 文件的转换器 这是在中完成的将 Doxygen 与 Matlab 结合使用 http ww
  • 像matlab一样在python中连接数组而不知道输出数组的大小

    我正在尝试在 python 中连接数组 类似于 matlab array1 zeros 3 500 array2 ones 3 700 array array1 array2 我在 python 中做了以下操作 array1 np zero
  • 考虑预分配速度[重复]

    这个问题在这里已经有答案了 我正在做以下事情 for i 1 m index 0 for j 1 n index index values i j 2 j 1 if j 1 symbol chip chip values index 1 e

随机推荐

  • element ui 实现动态表单

    实现具体功能 对表单进行新增 删除以及验证每一个表单的字段 实现效果如图 1 实现表单的添加和删除 新增 addForm index this refs form validate valid gt if valid alert submi
  • 数据结构的复杂度

    数据结构的复杂度 在介绍复杂度之前我们现分享一个名词叫算法效率 算法效率 算法效率是指算法执行的时间 算法执行时间需通过依据该算法编制的程序在计算机上运行时所消耗的时间来度量 算法效率也分为两种 一种是时间效率 一种是空间效率 也被称为时间
  • html爱心表白代码(最全)

    目录 写在前面 十四个表白效果及使用说明 最后几个是最新的效果 购买本文前12个代码 怎么在页面添加文字和背景音乐 如何得到自己喜欢的音乐链接地址 怎么修改背景颜色或字体颜色 其他表白代码 跨年表白代码 最新表白代码 绝对好看 常见问题说明
  • MATLAB小技巧(33)arima时间序列

    MATLAB小技巧 33 arima时间序列 前言 一 MATLAB仿真 二 仿真结果 三 小结 前言 MATLAB进行图像处理相关的学习是非常友好的 可以从零开始 对基础的图像处理都已经有了封装好的许多可直接调用的函数 这个系列文章的话主
  • Ajax回调函数中再次使用Ajax访问controller,通过controller return来重定向跳转页面失败

    Ajax访问controller 通过controller return来重定向跳转页面失败 Ajax回调函数中再次使用Ajax访问controller 通过controller return来重定向跳转页面失败 ajax type pos
  • python自定义输出颜色_Python logging自定义字段输出及设置日志打印颜色

    importloggingimportosfrom logging importhandlersclassJsonFilter logging Filter 此处定义字段的默认值 如果打印信息时不设置对应字段 则为默认值 服务服务名或者服务
  • 武侠乂怎么修改服务器,武侠乂操作技巧 武侠乂手游怎么操作

    武侠乂怎么操作 武侠乂是一个主要以生存竞技玩法为主游戏 在有限的时间和安全空间内 玩家需要边生存边搜索边战斗 最终击败所有其他玩家来获得胜利 今天小辰给大家介绍一下武侠乂的操作技巧 一起来看看吧 武侠乂怎么操作 如上图 手游不像端游 整体简
  • nvidia驱动安装·

    nvidia驱动安装 禁用nouveau驱动 sudo apt get remove purge nvidia sudo gedit etc modprobe d blacklist conf 在文本最后添加 禁用nouveau第三方驱动
  • 超详细的Nginx负载均衡+高可用配置(亲测附图)

    负载均衡 目的 提升吞吐率 提升请求性能 提 高容灾 Nginx 实现负载均衡用到 proxy pass 代 模块核心配置 将客户端请求代 转发至一组 upstream 虚拟服务池 负载均衡和反向代理的区别是 反向代理由代理服务器指定特定的
  • 电商零售行业1--用户消费行为分析

    用户消费行为分析 项目背景 数据处理 导入数据 数据探索可视化 数据预处理 用户整体消费分析 用户个体消费分析 用户消费金额 消费次数 描述性统计 用户消费分布图 用户累计消费金额占比分析 贡献度 用户消费行为 首购时间 最后一次购买时间
  • 解决php7.2后报错Warning: Use of undefined constant PRE - assumed问题

    解决此种问题其实也不是很难 只是报了 Warning警告 我们只需要关闭 PHP错误提示 就行了 具体步骤如下 1 打开 php ini 2 设置 error reporting E ALL E DEPRECATED E STRICT 3
  • 使用fiddle抓包使用教程

    Fiddler是什么 Fiddler是一个http调试代理 它能 够记录所有的你电脑和互联网之间的http通讯 Fiddler 可以也可以让你检查所有的http通讯 设置断点 以及Fiddle 所有的 进出 的数据 指cookie html
  • 如何在css文件中使用本地ttf/woff/woff2字体?

    如何在css文件中使用本地ttf woff woff2字体 1 首先下载ttf woff woff2字体文件 免费的字体文件可以上阿里矢量图库进行下载 不过数量很少 2 在css文件中配置相应代码 font face font family
  • 关于IBM MQ6.0与MQ8.0的通信问题

    国庆之后 负责的一个项目突然出现了问题 描述问题 在网络 业务 业务量都没有增长的情况下 MQ8的批量发送通道突然就挂掉了 变成retrying状态了 消息全都堵在传输队列里了 死信队列无消息 实时通道正常 排除网络原因导致的通道问题 采取
  • Cannot declare class app\home\controller\Cases because the name is already in use

    Cannot declare class app home controller Cases because the name is already in use 命名空间冲突了 use 模型类的时候使用as别名 同一个页面上 命名空间不同
  • MyBatis-Plus主键生成策略

    主键生成策略 MyBatis Plus默认实现5种主键生成策略 分别是 AUTO 配合数据库设置自增主键 可以实现主键的自动增长 类型为nmber INPUT 由用户输入 NONE 不设置 等同于INPUT ASSIGN ID 只有当用户未
  • 常见git报错问题

    1 windows使用git时出现 warning LF will be replaced by CRLF windows中的换行符为 CRLF 而在linux下的换行符为LF 所以在执行add 时出现提示 解决办法 rm rf git 删
  • FreeRTOS实时操作系统(三)任务挂起与恢复

    系列文章 FreeRTOS实时操作系统 一 RTOS的基本概念 FreeRTOS实时操作系统 二 任务创建与任务删除 HAL库 FreeRTOS实时操作系统 三 任务挂起与恢复 FreeRTOS实时操作系统 四 中断任务管理 FreeRTO
  • 将springboot的项目打包成jar部署

    一 在项目的配置文件pom xml下导入
  • 数学建模十大算法01-蒙特卡洛算法(Monte Carlo)

    文章目录 一 生成随机数 1 1 rand 1 2 unifrnd 1 3 联系与区别 二 引入 2 1 引例 2 2 基本思想 2 3 优缺点 三 实例 3 1 蒙特卡洛求解积分 3 2 简单的实例 3 3 书店买书 0 1规划问题 3