想生成的随机数的概率密度符合这个函数:
f(x)=4x,0<=x<=0.5
4-4x,0.5<=x<=1
我在网上找了一些教程,发现这个函数本身很简单,可以求反函数,就想用反函数法求一下随机数,下面是我的程序
clear all
close all
clc
x1 = 0 + (0.5-0).*rand([1 100000]);
% x1=0.5*x0;
Y=x1.^0.5;
t=(0:0.01:0.5);
y=4*t;
plot(t,y)
hold on
% figure
% hist(Y,100);
[histFreq, histXout] = hist(Y,100);
binWidth = histXout(2)-histXout(1);
h=bar(histXout, histFreq/binWidth/sum(histFreq));
hold on
% figure
x1 =0.5 + (1-0.5).*rand([1 100000]);
% x1=0.5*x0+0.5;
Y=-((1-x1).^0.5-1);
t=(0.5:0.01:1);
y=4-4*t;
plot(t,y);
hold on
% figure
% hist(Y,100);
[histFreq, histXout] = hist(Y,100);
binWidth = histXout(2)-histXout(1);
bar(histXout, histFreq/binWidth/sum(histFreq),'r')
不知道是我哪里理解错了还是哪里有问题,前一部分Y的取值怎么约束到0-0.5啊?用我的算法取值只能是到二分之根号二啊,这个程序应该怎么办,或者用别的程序能达到我的要求也行,各位大神支支招。