一种快速的任意分布随机数产生方法、系统及其检验方法、系统与流程

专利2022-05-09  43



1.本发明涉及数字信号处理技术领域,具体地,涉及一种快速的任意分布随机数产生方法、系统及其检验方法、系统。


背景技术:

2.从模拟信号到数字信号处理的跨越,实现了对自然界连续信息的稳定采集、存储、处理与分析,与模拟信号相比,除了稳定性好、抗噪声能力强,数字信号处理还具有非实时处理的巨大优势,能够很方便地仿真、调试复杂的电子系统,快速定位系统中存在的问题或故障。在数字信号的仿真与调试中,很多情况下需要进行随机数的模拟,例如产生随机分布的数字信源、产生随机杂波噪声或干扰等,此外,在从数学上表述物理、化学、工程、经济等专业中的复杂相互作用时,随机数还被广泛应用于这些相互作用的蒙特卡洛仿真试验。一般来说,对于随机数的要求应满足循环周期足够长、多次产生数据序列之间的互相关系数足够小、能够通过随机数检验且满足特定的统计分布特性。
3.产生任意随机数的方法很多,最早的线性同余法(linear congruential generator,lcg)是早期使用最多的随机数生成算法之一,但该方法获得的随机性有限,且容易受到算法参数的影响。其它的方法包括中位平方法(middle

square)、加性同余法(additive congruential method)、xorshift、mersenne twister和well算法等,其中mersenne twister和well是目前应用最广泛的两种算法,这两种算法不仅克服了传统算法的缺陷,而且产生的随机数能够通过广泛的随机数检验。
4.在产生随机数的基础上实现特定分布随机数的输出,通常通过推导目标分布与均匀分布之间的关系来完成,例如,均值为零、方差为2β2的拉普拉斯分布随机数产生的一种实现方法包括以下两个步骤:
5.独立产生在区间(0,1)上匀分布的随机数u1和u2;
6.计算出拉普拉斯分布随机数
7.因此,不同分布形式的随机数对应的计算公式不同,且存在较为复杂的计算步骤,包括开方、平方、求幂次、求对数等。


技术实现要素:

8.本发明的目的是提供一种快速的任意分布随机数产生方法、系统及其检验系统、方法,该快速的任意分布随机数产生方法、系统及其检验方法、系统可以产生均匀度较高的随机数,符合标准函数的要求,且拥有较高的处理效率。
9.为了实现上述目的,本发明提供了一种快速的任意分布随机数产生方法,所述快速的任意分布随机数产生方法包括:
10.配置随机数向量x及其对应的期望目标分布函数为y=f(x);其中所述随机数向量
x的长度为n、小数位数最多为k、期望最大值为x
max
、期望最小值为x
min
以及分布范围b
x
=x
max

x
min

11.将所述分布范围b
x
=x
max

x
min
平均划分为l段,其中所述l段中的第l段的数值范围为
12.以所述l段等间距的方式从函数y=f(x)中在区间[x
min
,x
max
]上抽取l个值,其中所述l个值中的第l个值y
l
对应的随机数为
[0013]
计算所述l段中的第l段区间的随机数个数其中,l=1,2,

,l;
[0014]
针对所述l段中的第l个区间,产生n
l
个在区间[0,1]均匀分布的随机数r
l
,计算所述l段中的第l个区间中获得的随机数向量
[0015]
获取组合得到的所有l个区间的数据
[0016]
基于数据向量中的每相邻两个字符获得数组c;
[0017]
获取在区间[0,1]上产生的均匀分布的随机数组r
s
,其中所述随机数组r
s
的数组长度与所述数组c的数组长度相同;以及
[0018]
基于所述数据的长度确定第一次循环中基准的位置th,从所述随机数组r
s
的第一个数开始依次执行下述循环步骤,其中在第i次循环中,当前位置位于所述随机数组r
s
的第j个数,若所述随机数组r
s
中第j个数大于0.5,则取出所述数据中所述位置th右边的第c(j)个数b,否则取出所述数组中基准的位置th左边的第c(j)个数b,将所述b赋值给x(i)并从所述数组中删除所述b,其中在下一次循环中以所述b的位置为基准,直至所述数组中的所有数赋值给x得到随机数。
[0019]
优选地,所述基于数据向量中的每相邻两个字符获得数组c包括按顺序执行下述步骤以获得数组c:
[0020]
从所述数据向量中的第一个字符开始将相邻两个字符构成一个数,若最后存在一个单独的字符,则该单独的字符作为一个数
[0021]
优选地,所述基于所述数据的长度确定第一次循环中基准的位置th包括:
[0022]
将所述数据的长度除以2后四舍五入以得到所述基准的位置th。
[0023]
另外,本发明提供一种随机数检验方法,针对使用上述的快速的任意分布随机数产生方法所产生的随机数,所述随机数检验方法包括:
[0024]
将区间[x
min
,x
max
]平均划分为2l段,其中,所述2l段中第j段的数值范围为
[0025]
以2l段等间距的方式抽取函数y在区间[x
min
,x
max
]上的2l个值形成标准函数数组h,其中第j个值y

j
对应的随机数为
[0026]
统计x在区间上的数据个数,形成检验函数数组k;
[0027]
计算随机数组x与标准函数数组h之间的误差其中x
i
和h
i
分别表示x和h的第i个数;以及
[0028]
在所述误差error小于预设定的误差阈值时,判定所述随机数的合格。
[0029]
另外,本发明提供一种快速的任意分布随机数产生系统,所述快速的任意分布随机数产生系统包括:
[0030]
配置单元,用于配置随机数向量x及其对应的期望目标分布函数为y=f(x);其中所述随机数向量x的长度为n、小数位数最多为k、期望最大值为x
max
、期望最小值为x
min
以及分布范围b
x
=x
max

x
min

[0031]
划分单元,用于将所述分布范围b
x
=x
max

x
min
平均划分为l段,其中所述l段中的第l段的数值范围为
[0032]
抽取单元,用于以所述l段等间距的方式从函数y=f(x)中在区间[x
min
,x
max
]上抽取l个值,其中所述l个值中的第l个值y
l
对应的随机数为
[0033]
随机数计算单元,用于计算所述l段中的第l段区间的随机数个数其中,l=1,2,

,l;
[0034]
随机数向量计算单元,用于针对所述l段中的第l个区间,产生n
l
个在区间[0,1]均匀分布的随机数r
l
,计算所述l段中的第l个区间中获得的随机数向量
[0035]
数据获取单元,用于获取组合得到的所有l个区间的数据
[0036]
数组c获得单元,用于基于数据向量中的每相邻两个字符获得数组c;
[0037]
数组r
s
获取单元,用于获取在区间[0,1]上产生的均匀分布的随机数组r
s
,其中所述随机数组r
s
的数组长度与所述数组c的数组长度相同;以及
[0038]
随机数生成单元,用于基于所述数据的长度确定第一次循环中基准的位置th,从所述随机数组r
s
的第一个数开始依次执行下述循环步骤,其中在第i次循环中,当前位置位于所述随机数组r
s
的第j个数,若所述随机数组r
s
中第j个数大于0.5,则取出所述数据中所述位置th右边的第c(j)个数b,否则取出所述数组中基准的位置th左边的第c(j)个数b,将所述b赋值给x(i)并从所述数组中删除所述b,其中在下一次循环中以所述b的位置为基准,直至所述数组中的所有数赋值给x得到随机数。
[0039]
优选地,所述数组c获得单元用于基于数据向量中的每相邻两个字符获得数组c包括
[0040]
所述数组c获得单元用于按顺序执行下述步骤以获得数组c:
[0041]
从所述数据向量中的第一个字符开始将相邻两个字符构成一个数,若最后存在一个单独的字符,则该单独的字符作为一个数
[0042]
优选地,所述随机数生成单元用于基于所述数据的长度确定第一次循环中基准的位置th包括:
[0043]
所述随机数生成单元用于将所述数据的长度除以2后四舍五入以得到所述基准的位置th。
[0044]
另外,本发明还提供一种随机数检验系统,其特征在于,针对使用上述的快速的任意分布随机数产生系统所产生的随机数,所述随机数检验系统包括:
[0045]
平均划分单元,用于将区间[x
min
,x
max
]平均划分为2l段,其中,所述2l段中第j段的数值范围为
[0046]
标准函数数组形成单元,用于以2l段等间距的方式抽取函数y在区间[x
min
,x
max
]上的2l个值形成标准函数数组h,其中第j个值y
j

对应的随机数为
[0047]
检验函数数组形成单元,用于统计x在区间上的数据个数,形成检验函数数组k;
[0048]
误差计算单元,用于计算随机数组x与标准函数数组h之间的误差其中x
i
和h
i
分别表示x和h的第i个数;以及
[0049]
合格判定单元,用于在所述误差error小于预设定的误差阈值时,判定所述随机数的合格。
[0050]
另外,本发明还提供一种存储介质,其上存储有程序,该程序被处理器执行时实现上述的随机数检验方法或上述的随机数检验方法。
[0051]
另外,本发明还提供一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述的随机数检验方法或上述的随机数检验方法。
[0052]
根据上述技术方案,本发明通过将期望分布函数均匀划分为多段分别进行拟合分析,从而提出了一种适用范围广、计算简单高效的快速随机数产生及检验方法,该方法不仅能够用于任何场景下的随机分布产生,不需要推导该分布函数与均匀分布之间的关系,而且处理过程简单、灵活,没有复杂的运算操作,同时能够很好地适应有限维度随机数的产生与分析。本发明适用于任何统计分布的随机数产生,只需要用户给定该统计分布的标准函数,并给出该随机数的期望数值范围;在产生随机数的过程中不需要复杂的运算公式,都是由最基本的加减乘除运算完成,简化了算法设计,提高了算法的处理效率;本发明还给出了对产生随机数的2倍分段检验法,以衡量最终生成随机数的统计分布与期望统计分布之间的误差。
[0053]
本发明的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
[0054]
附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明,但并不构成对本发明的限制。在附图中:
[0055]
图1是说明本发明的一种快速的任意分布随机数产生方法的流程图;
[0056]
图2是期望分布与本发明产生的分布曲线比较示意图;以及
[0057]
图3是期望分布与本发明产生的分布曲线比较(中间局部区域放大图)的效果图。
具体实施方式
[0058]
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
[0059]
图1是本发明提供的一种快速的任意分布随机数产生方法的流程图,如图1所示,所述快速的任意分布随机数产生方法包括:
[0060]
s101,配置随机数向量x及其对应的期望目标分布函数为y=f(x);其中所述随机数向量x的长度为n、小数位数最多为k、期望最大值为x
max
、期望最小值为x
min
以及分布范围b
x
=x
max

x
min

[0061]
s102,将所述分布范围b
x
=x
max

x
min
平均划分为l段,其中所述l段中的第l段的数值范围为
[0062]
s103,以所述l段等间距的方式从函数y=f(x)中在区间[x
min
,x
max
]上抽取l个值,其中所述l个值中的第l个值y
l
对应的随机数为
[0063]
s104,计算所述l段中的第l段区间的随机数个数其中,l=1,2,

,l;
[0064]
s105,针对所述l段中的第l个区间,产生n
l
个在区间[0,1]均匀分布的随机数r
l
,计算所述l段中的第l个区间中获得的随机数向量
[0065]
s106,获取组合得到的所有l个区间的数据
[0066]
s107,基于数据向量中的每相邻两个字符获得数组c;
[0067]
s108,获取在区间[0,1]上产生的均匀分布的随机数组r
s
,其中所述随机数组r
s
的数组长度与所述数组c的数组长度相同;以及
[0068]
s109,基于所述数据的长度确定第一次循环中基准的位置th,从所述随机数组r
s
的第一个数开始依次执行下述循环步骤,其中在第i次循环中,当前位置位于所述随机数组r
s
的第j个数,若所述随机数组r
s
中第j个数大于0.5,则取出所述数据中所述位置th右边的第c(j)个数b,否则取出所述数组中基准的位置th左边的第c(j)个数b,将所述b赋值给x(i)并从所述数组中删除所述b,其中在下一次循环中以所述b的位置为基准,直至所述数组中的所有数赋值给x得到随机数。
[0069]
优选地,所述基于数据向量中的每相邻两个字符获得数组c包括:
[0070]
按顺序执行下述步骤以获得数组c:从所述数据向量中的第一个字符开始将相邻两个字符构成一个数,若最后存在一个单独的字符,则该单独的字符作为一个数
[0071]
优选地,所述基于所述数据的长度确定第一次循环中基准的位置th包括:将所述数据的长度除以2后四舍五入以得到所述基准的位置th。
[0072]
另外,本发明还提供一种随机数检验方法,针对使用权利要求1

3中任意一项所述的快速的任意分布随机数产生方法所产生的随机数,所述随机数检验方法包括:
[0073]
将区间[x
min
,x
max
]平均划分为2l段,其中,所述2l段中第j段的数值范围为
[0074]
以2l段等间距的方式抽取函数y在区间[x
min
,x
max
]上的2l个值形成标准函数数组h,其中第j个值y

j
对应的随机数为
[0075]
统计x在区间上的数据个数,形成检验函数数组k;
[0076]
计算随机数组x与标准函数数组h之间的误差其中x
i
和h
i
分别表示x和h的第i个数;以及
[0077]
在所述误差error小于预设定的误差阈值时,判定所述随机数的合格。
[0078]
举例而言,设期望产生的随机数向量x的长度为n=10000,x的小数位数最多为k=4,x的期望目标分布函数为x的期望最大值为x
max
=100,x的期望最小值为x
min


100,计算x的分布范围b
x
=x
max

x
min
=200;将[x
min
,x
max
]平均划分为l=1000段,第l段的数值范围为[

100 0.2(l

1),

100 0.2l];以1000段等间距的方式抽取函数y在区间[

100,100]上的1000个值,第l个值y
l
对应的随机数为

100 0.1(2l

1);计算第l(l=1,2,...,l)段区间的随机数个数对于第l个区间,分别产生n
l
个在区间[0,1]均匀分布的随机数r
l
,计算第l个区间获得的随机数向量x
l


100 0.2(l

1 r
l
);组合所有1000个区间的数据得到将数据向量按照字符串的形式组合起来,每相邻两个字符构成一个数,如果最后只剩一个字符,该字符单独为一个数,所有数按顺序组成数组c;在区间[0,1]上产生均匀分布的随机数组r
s
,r
s
的数组长度与数组c相同;令在第一次循环中以th的位置为基准,从r
s
的第一个数开始循环执行,在第i次循环中,当前位置位于r
s
的第j个数,若r
s
>0.5,则取出数组中th右边的第c(j)个数b,否则取出数组中th左边的第c(j)个数b,将b赋值给x(i),同时从数组中剔除掉b,在下一次循环中以b的位置为基准,直到数组中的所有数赋值给x。
[0079]
对产生的随机数组x进行统计检验,将[

100,100]平均划分为2000段,以2000段等
间距的方式抽取函数y在区间[

100,100]上的2000个值,形成标准函数数组h;统计x在区间[x
min
0.1(j

1),x
min
0.1j]上的数据个数,形成检验函数数组k;计算随机数组x与标准函数数组h之间的误差图2和图3给出了期望分布与本专利方法产生的分布曲线比较。
[0080]
另外,本发明还提供一种快速的任意分布随机数产生系统,所述快速的任意分布随机数产生系统包括:
[0081]
配置单元,用于配置随机数向量x及其对应的期望目标分布函数为y=f(x);其中所述随机数向量x的长度为n、小数位数最多为k、期望最大值为x
max
、期望最小值为x
min
以及分布范围b
x
=x
max

x
min

[0082]
划分单元,用于将所述分布范围b
x
=x
max

x
min
平均划分为l段,其中所述l段中的第l段的数值范围为
[0083]
抽取单元,用于以所述l段等间距的方式从函数y=f(x)中在区间[x
min
,x
max
]上抽取l个值,其中所述l个值中的第l个值y
l
对应的随机数为
[0084]
随机数计算单元,用于计算所述l段中的第l段区间的随机数个数其中,l=1,2,...,l;
[0085]
随机数向量计算单元,用于针对所述l段中的第l个区间,产生n
l
个在区间[0,1]均匀分布的随机数r
l
,计算所述l段中的第l个区间中获得的随机数向量
[0086]
数据获取单元,用于获取组合得到的所有l个区间的数据
[0087]
数组c获得单元,用于基于数据向量中的每相邻两个字符获得数组c;
[0088]
数组r
s
获取单元,用于获取在区间[0,1]上产生的均匀分布的随机数组r
s
,其中所述随机数组r
s
的数组长度与所述数组c的数组长度相同;以及
[0089]
随机数生成单元,用于基于所述数据的长度确定第一次循环中基准的位置th,从所述随机数组r
s
的第一个数开始依次执行下述循环步骤,其中在第i次循环中,当前位置位于所述随机数组r
s
的第j个数,若所述随机数组r
s
中第j个数大于0.5,则取出所述数据中所述位置th右边的第c(j)个数b,否则取出所述数组中基准的位置th左边的第c(j)个数b,将所述b赋值给x(i)并从所述数组中删除所述b,其中在下一次循环中以所述b的位置为基准,直至所述数组中的所有数赋值给x得到随机数。
[0090]
优选地,所述数组c获得单元用于基于数据向量中的每相邻两个字符获得数组c包括
[0091]
所述数组c获得单元用于按顺序执行下述步骤以获得数组c:
[0092]
从所述数据向量中的第一个字符开始将相邻两个字符构成一个数,若最后存在一个单独的字符,则该单独的字符作为一个数
[0093]
优选地,所述随机数生成单元用于基于所述数据的长度确定第一次循环中基准的位置th包括:
[0094]
所述随机数生成单元用于将所述数据的长度除以2后四舍五入以得到所述基准的位置th。
[0095]
另外,本发明还提供一种随机数检验系统,其特征在于,针对使用上述的快速的任意分布随机数产生系统所产生的随机数,所述随机数检验系统包括:
[0096]
平均划分单元,用于将区间[x
min
,x
max
]平均划分为2l段,其中,所述2l段中第j段的数值范围为
[0097]
标准函数数组形成单元,用于以2l段等间距的方式抽取函数y在区间[x
min
,x
max
]上的2l个值形成标准函数数组h,其中第j个值y

j
对应的随机数为
[0098]
检验函数数组形成单元,用于统计x在区间上的数据个数,形成检验函数数组k;
[0099]
误差计算单元,用于计算随机数组x与标准函数数组h之间的误差其中x
i
和h
i
分别表示x和h的第i个数;以及
[0100]
合格判定单元,用于在所述误差error小于预设定的误差阈值时,判定所述随机数的合格。
[0101]
另外,本发明还提供一种存储介质,其上存储有程序,该程序被处理器执行时实现上述的随机数检验方法或上述的随机数检验方法。
[0102]
另外,本发明还提供一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述的随机数检验方法或上述的随机数检验方法。
[0103]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
[0104]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0105]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特
定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0106]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0107]
在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
[0108]
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。存储器是计算机可读介质的示例。
[0109]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd

rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0110]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0111]
本领域技术人员应明白,本技术的实施例可提供为方法、系统或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
[0112]
以上仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
转载请注明原文地址:https://doc.8miu.com/read-1050058.html

最新回复(0)