设此函数为[0,1)区间内的平均概率分布随机函数:
double random();
现在要求利用此函数实现一个[0,1)区间内的非均匀分布随机函数,分布的概率符线性增长函数f(x) = x。即:
1、落在[0,0.5)区间内的概率是落在[0.5,1)区间内概率的四分之一;
2、落在[0,0.25)区间内的概率是落在[0.25,0.5)区间内概率的四分之一;
3、落在[0.5,0.75)区间内的概率是落在[0.75,1)区间内概率的四分之一;
4、落在[0,0.125)区间内的概率是落在[0.125,0.25)区间内概率的四分之一;
5、以此类推……;
说再明白一点:
1、如果将[0,1)从0.5处分成2段,那么落在[0,0.5)区间内的概率是四分之一,落在[0.5,1)区间内的概率是四分之三;
2、如果将[0,1)从0.25,0.5,0.75处分成4段,那么落在[0,0.25)区间内的概率是十六分之一,落在[0.25,0.5)区间内的概率是十六分之三,落在[0.5,0.75)区间内的概率是十六分之五,落在[0.75,1)区间内的概率是十六分之七;
3、如果将[0,1)平均分成8段,那么落在[0,0.125)区间内的概率是六十四分之一,落在[0.125,0.25)区间内的概率是六十四分之三,落在[0.25,0.375)区间内的概率是六十四分之五,……;
4、以此类推……;
如何实现这个函数?
double random();
现在要求利用此函数实现一个[0,1)区间内的非均匀分布随机函数,分布的概率符线性增长函数f(x) = x。即:
1、落在[0,0.5)区间内的概率是落在[0.5,1)区间内概率的四分之一;
2、落在[0,0.25)区间内的概率是落在[0.25,0.5)区间内概率的四分之一;
3、落在[0.5,0.75)区间内的概率是落在[0.75,1)区间内概率的四分之一;
4、落在[0,0.125)区间内的概率是落在[0.125,0.25)区间内概率的四分之一;
5、以此类推……;
说再明白一点:
1、如果将[0,1)从0.5处分成2段,那么落在[0,0.5)区间内的概率是四分之一,落在[0.5,1)区间内的概率是四分之三;
2、如果将[0,1)从0.25,0.5,0.75处分成4段,那么落在[0,0.25)区间内的概率是十六分之一,落在[0.25,0.5)区间内的概率是十六分之三,落在[0.5,0.75)区间内的概率是十六分之五,落在[0.75,1)区间内的概率是十六分之七;
3、如果将[0,1)平均分成8段,那么落在[0,0.125)区间内的概率是六十四分之一,落在[0.125,0.25)区间内的概率是六十四分之三,落在[0.25,0.375)区间内的概率是六十四分之五,……;
4、以此类推……;
如何实现这个函数?