matlab坐标轴⾮均匀分布,matalb——⽣成离散⾮均匀随机数matalb——⽣成离散⾮均匀随机数
今⽇感冒,状态⾮常差,连锁故障风险评估的程序仍然没有调试出bug的问题所在。在和Yu XingBin的交流中发现了程序设计中另外⼀个问题,会导致程序计算的指标出现较⼤偏差。matlab生成随机数
⼀、问题
连锁故障仿真程序中,第⼀步就是需要随机选择⼀条故障线路。起先我认为按照均匀分布产⽣[1 n]之间的任⼀随机数(n为总线路数),结果发现仿真结果出现母线分离的概率⾮常⼤,远远超过了Yu XingBin论⽂中的结论。疑惑不解,遂于之邮件交流,得知两点信息:
1.输电线路的故障概率远远⼤于变压器线路故障概率。因为输电线路很长,并且暴露在外部环境中,易受天⽓等因素的影响,其故障概率显然⼤于变压器。
2.输电线路的故障概率近视的认为与线路的长度成正⽐。
根据以上信息分析可以得知,对于固定拓扑结构的电⼒⽹络,故障线路的概率是随机的、离散的,⽽不是均匀分布的。故障线路的选择应该按照每条线路的故障概率进⾏抽样。所以需要实现离散⾮均匀分布的随机整数抽样。
⼆、解决⽅案
⽹上现成有⼀个解决⽅案如下: function y=dis_rand(x,p,n)
%dis_rand 产⽣离散分布随机数
% x:可能取值
% p:取值概率
% n:拟⽣成随机数的数⽬
cp=cumsum(p);
y=zeros(1,n);
for i=1:n
y(i)=x(sum(cp<=rand(1))+1);
end
算法说明:利⽤matlab中的rand函数获取区间[0,1]上均匀分布的随机数,根据希望的分布律把[0,1]
区间分段,各段的长度依次为随机数取各个可能值的概率。当那个均匀分布的随机数落在其中第i个⼩段上时,就把第i个可能取值输出。
例:y=dis_rand([1 :3],[0.4 0.3 0.4],1)  即按照0.4 0.3 0.4的概率从1,2,3三个数字中产⽣⼀个随机数。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。