[发明专利]一种生成随机数的方法在审
申请号: | 201811247698.1 | 申请日: | 2018-10-25 |
公开(公告)号: | CN109445750A | 公开(公告)日: | 2019-03-08 |
发明(设计)人: | 杨胜天;陈慧霖 | 申请(专利权)人: | 浙江工商大学 |
主分类号: | G06F7/58 | 分类号: | G06F7/58 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 310012 浙*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种生成随机数的方法,属于计算机领域。所述生成随机数的方法为区间算法在有限精度整数运算条件下的一种改进算法,其主要的改进包括输出区间的隐性分割方法和输出区间的3子区间重正化方法。该方法完全消除了区间算法输出区间分割的舍入误差问题,同时也极大地缓解了输入区间分割的舍入误差问题,从而基本解决了有限精度运算导致区间算法输出随机数质量下降的问题,实现了在有限精度整数运算条件下将任意给定概率分布的输入数据以精确或接近精确的方式转换为任意指定概率分布的随机数。 | ||
搜索关键词: | 随机数 区间算法 输出区间 概率分布 舍入误差 整数运算 计算机领域 方式转换 区间分割 质量下降 子区间 分割 算法 运算 改进 输出 缓解 | ||
【主权项】:
1.一种生成随机数的方法,其特征在于,所述方法包括:设输入序列为在集合
中取值的二元独立同分布随机序列,概率分布为
式中a0和a1为互素正整数;设拟输出序列为在
中取值的长度为N的二元独立同分布随机序列,概率分布为
式中b0和b1为互素正整数;预设的算法参数包括区间长度底数β(β为大于等于2的整数)和区间长度指数k(k为正整数);步骤一、初始化累计输出长度变量n为0;初始化输入区间端点列表变量I为(0,βk),其中列表是指支持按位置索引元素、插入元素和删除元素的动态数组;初始化输出区间分割端点列表变量J为(0,βk),候选输出序列列表变量K为(λ),其中λ表示长度为0的空字符串;步骤二、若列表K的长度小于3,则根据拟输出序列的概率分布以精确分割区间的方式对输出区间分割端点列表J和候选输出序列列表K进行细化直至列表K的长度等于3,其中,当待细化的输出区间或输出子区间无法精确分割时,则对该区间进行隐性分割,即将该区间分割为两部分但不产生新的候选输出比特,并保证其中较大的一部分是输出概率分布的公分母b0+b1的整数倍,使其在下一次分割时可以获得精确分割;步骤三、计算输入区间分割点
式中
表示小于等于实数r的最大整数;从输入序列读取一个比特x,若x=0,则更新变量I为列表(I[0],I′),否则更新变量I为列表(I′,I[1]);步骤四、比较输入区间端点列表I和输出区间分割端点列表J,除了保留列表J中与输入区间[I[0],I[1])有交集的子区间的端点以及对应于该子区间的列表K中的候选输出序列,删除列表J和K中的其余所有元素,其中所述列表J中的子区间均为列表J中相邻端点组成的左闭右开区间,所述对应于列表J中某子区间的列表K中的候选输出序列为列表K中与该子区间左端点在列表J中的编号具有相同编号的候选输出序列;步骤五、以输出区间分割端点列表J的左端点J[0]为原点对列表I和J中的所有端点进行重新定位,即将列表I和J中的所有元素减去J[0];步骤六、输出列表K中所有候选序列的最长公共前缀,并将列表K中的所有候选序列更新为其删除所述最长公共前缀后剩余的序列,同时更新累计输出长度变量n为n+m,式中m表示所述最长公共前缀的长度;步骤七、若n
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江工商大学,未经浙江工商大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201811247698.1/,转载请声明来源钻瓜专利网。