CN110727414B - 基于哈夫曼编码的随机数生成方法 - Google Patents
基于哈夫曼编码的随机数生成方法 Download PDFInfo
- Publication number
- CN110727414B CN110727414B CN201910938634.4A CN201910938634A CN110727414B CN 110727414 B CN110727414 B CN 110727414B CN 201910938634 A CN201910938634 A CN 201910938634A CN 110727414 B CN110727414 B CN 110727414B
- Authority
- CN
- China
- Prior art keywords
- random number
- huffman
- subdivision
- binary
- symbol
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 238000006243 chemical reaction Methods 0.000 claims abstract description 8
- 238000010276 construction Methods 0.000 claims abstract description 3
- 238000004891 communication Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 241000764238 Isis Species 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种基于哈夫曼编码的高效随机数生成方法,包括以下步骤:整数权重比值表示、随机数扩展、随机数细分、哈夫曼树构造和随机数生成;随机数生成:使用二元无偏随机数发生器产生0/1二元随机数序列B=B(1)B(2)B(3)B(4)…,B(i)∈{0,1},按照构造的哈夫曼码C进行解码,得到唯一的细分随机数序列X″=S″(1)S″(2)S″(3)S″(4)…,S″(i)∈S″;随后将子符号替换为细分前的符号,得到扩展随机数序列X′=S′(1)S′(2)S′(3)S′(4)…,S′(i)∈S′;再舍弃添加的无效符号z,得到最终的加权随机数序列X=S(1)S(2)S(3)S(4)…,S(i)∈S,即为满足要求的加权随机数序列;定义哈夫曼转化效率为RT=1/d(T);平均每一位二元无偏随机数可以转化为RT位细分随机数;整体由二元无偏随机数转化为加权随机数的效率为R=RT*RW。本发明产生的加权随机数序列既完全符合权重要求,也提高了生成效率。
Description
技术领域
本发明涉及一种随机生成方法,尤其涉及一种基于哈夫曼编码的随机数生成方法。
背景技术
随机数发生器在信息安全、电子商务、通讯、实验仿真、博彩业、游戏设计等众多领域具有广泛的应用。而且随着技术的发展,对随机数的类型、质量、效率等都提出了更高的要求。
目前随机数发生器绝大部分都是用来产生二元无偏随机数序列,而实际应用中往往需要产生任意给定权重或任意范围的随机数。通常的做法是基于整数区间的划分。将一个大的区间按照符号的权重或概率划分为小区间,然后由二元无偏随机数发生器产生2的方次范围的随机数,根据该随机数落在的小区间来转化为对应的随机数。其主要存在以下两个方面的问题,第一:生成每位加权随机数采用了固定长度的二元无偏随机数,从信息论的角度,不同权重的符号包含不同的信息量,采用固定长度的二元无偏随机数至少按照其中最大信息量来消耗,造成了生成效率上的浪费;第二:所有符号的权重之和wS往往并不是2的方次,而二元无偏随机数发生器产生的随机数范围为2d,要么舍弃超过wS的部分而损失效率,要么对每个符号的权重进行缩放取整形成近似权重而影响随机数的质量。在部分应用场景下,这些问题会导致传统的随机数发生器无法满足要求。
发明内容
本专利所要解决的问题是针对上述现有技术的不足,提出一种基于哈夫曼编码的高效随机数生成方法,用于信息安全领域,本发明通过添加一个适当权重的无效符号,有效保证符号权重的准确性,同时结合哈夫曼解码转化,生成不同权重的符号消耗不同长度的二元无偏随机数。本方法产生的加权随机数序列既完全符合权重要求,也提高了生成效率,其效率由哈夫曼树的平均深度及有效权重占比决定,在各符号的权重均是2的方次时可以达到信息论的理论极限。本发明的随机数的类型、质量、效率等更高,可用于信息安全、电子商务、通讯、实验仿真、博彩业、游戏设计等众多领域。
为了实现上述技术目的,本发明采取的技术方案是:基于哈夫曼编码的高效随机数生成方法,其特征包括以下步骤:
1)整数权重比值表示:假设需要产生的随机数S有t个有效符号,S={S1,S2,...,St},t为整数,t≥2,对应的概率分别为P={p1,p2,...,pt},将比值p1:p2:...:pt表示为最简整数权重比值W,W={w1:w2:...:wt},其中wi(i=1,2,...,t)均为正整数,且最大公约数gcd(w1,w2,...,wt)=1;如果原始概率比值无法使用整数权重比值表示,则根据实际需要在适当的精度下取得近似整数比值或放弃本方法;
2)随机数扩展:对整数权重比值W求和wS,wS=w1+w2+…+wt,计算哈夫曼的深度d,d为满足2d-1<wS≤2d的正整数;如果wS<2d,添加一个无效符号Sz,对应的整数权重比值为wZ=2d-wS;如果wS=2d,无需添加无效符号,为统一表示也可认为添加一个无效符号Z,其权重比值wZ为0;此时随机数扩展为t+1个符号S′={S1,S2,...,St,SZ},称为扩展符号,对应的概率为整数权重比值为W′={w1:w2:...:wt:wZ},总权重为2d,有效权重占比RW=wS/2d;
3)随机数细分:在哈夫曼树中,深度为l的节点对应的概率为2-l,而往往不具有这样的形式,往往不具有这样的形式,但是,可以将该符号以及对应的概率进行细分,每个细分后的符号的概率具有这样的形式,具体方法是,将每个wi(i=1,2,...,t,Z)按照二进制展开为ni个不同的2的方次的和,即/>其中/>对应的将符号Si(i=1,2,...,t,Z)细分为ni个不同细分符号/>对应的整数权重分别为/>概率为/>在哈夫曼树中的深度为/>细分符号总个数为n=n1+n2+…+nt+nZ,所有细分符号的集合记为S″={Sij:i=1,2,...,t,Z;j=1,2,...,ni},对应的概率为/>
4)哈夫曼树构造:将细分后的概率空间中的每个细分符号Sij(i=1,2,...,t,Z;j=1,2,...,ni)看作叶子节点,在二叉树中的深度为d-eij,构造出的完全二叉树即为哈夫曼树T;将连接每个父节点与其子节点的两条边标记为0与1,从根节点到叶子节点的路径的标记序列Cij即为该叶子节点对应细分符号的码字,称为哈夫曼码;对所有的细分符号S″={Sij:i=1,2,...,t,Z;j=1,2,...,ni},确定对应的哈夫曼码C={Cij:i=1,2,...,t,Z;j=1,2,...,ni};定义哈夫曼树T的平均深度为其中cl为哈夫曼树T中深度为l的叶子节点的个数;实际上,哈夫曼树T的平均深度为也等于细分后概率空间的香农熵H(S″),其中H是香农信息熵函数;
5)随机数生成:使用二元无偏随机数发生器产生0/1二元随机数序列B=B(1)B(2)B(3)B(4)...,B(i)∈{0,1},按照构造的哈夫曼码C进行解码;由于哈夫曼编码是一种前缀码,可以解码得到唯一的细分随机数序列X″=S″(1)S″(2)S″(3)S″(4)...,S″(i)∈S″,i=1,2,...;随后将每个细分符号S″(i)∈S″替换为细分前的扩展符号S′(i)∈S′,得到扩展随机数序列X′=S′(1)S′(2)S′(3)S′(4)…,S′(i)∈S′,再舍弃添加的无效符号SZ,得到最终的加权随机数序列X=S(1)S(2)S(3)S(4)...,S(i)∈S即为满足要求的加权随机数序列;定义哈夫曼转化效率为RT=1/d(T),其意义是平均每一位二元无偏随机数可以转化为RT位细分随机数,整体由二元无偏随机数转化为加权随机数的效率为R=RT*RW。
有益效果:
(1)本发明通过建立合适的哈夫曼编码,将二元无偏随机数序列解码转化为加权随机数序列,满足了特定场合下对加权随机数的需求。
(2)本发明对所有有效符号的整数权重之和非2的方次的情况,添加适当权重的非有效字符,使得最终产生的随机数严格满足其权重比值。同传统近似比值的方法,本发明为工程应用保证了加权随机数的质量。
(3)本发明在保证其权重比值的基础上,使用了哈夫曼编码对无偏随机数序列进行解码转化。其转化效率取决于该哈夫曼树的平均深度,转化效率高,在各符号的权重均是2的方次时可以达到信息论的理论极限,为加权随机数的应用提供效率上的优势。
附图说明
图1为本发明的流程示意图。
图2本发明使用哈弗曼解码来转化随机数示意图。
具体实施方式
下面结合附图和具体实施方式,进一步阐明本发明,应理解这些实施方式仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
实施例1
如图1所示,本实施例1目标:生成符号集S={1,2,3,4,5,6}的等概率随机数序列;传统方法:由于6并非2的方次,最接近的一个方次为8。具体的生成方式是使用3比特的二元无偏随机数确定1-8之间的随机数,如果小于等于6则保留,否则丢弃。最终生成目标随机数效率即平均生成1位目标随机数需要消耗4位二元无偏随机数。
本基于哈夫曼编码的高效随机数生成方法,包括以下步骤:
步骤1:将概率比表示为最简整数权重比1:1:1:1:1:1;
步骤2:确定哈夫曼树的深度为3,添加无效符号Z,对应权重为2;
步骤3:由于每个符号的权重已经是2的方次,无需细分;
步骤4:构建的哈夫曼树与编码见图2中的(例1)部分;
步骤5:根据公式计算得最终生成目标随机数效率优于传统方法的1/4。例如:假设有一个二元无偏随机数发生器产生的序列B={1001110101011001000...},根据哈夫曼解码可得扩展随机数序列X′={5,Z,6,3,Z,2,Z...},再去除无效符号输出目标随机数序列X={5,6,3,2,1...}。此时生成5位目标随机数消耗了19位二元无偏随机数。
实施例2:
目标:生成符号集S={1,2},概率为的随机数序列,传统方法:由于整数权重和7并非2的方次,最接近的一个方次为8。具体的生成方式是使用3比特的二元无偏随机数确定1-8之间的随机数,如果在1-6之间生成符号1,如果为7生成符号2,否则丢弃。最终生成目标随机数效率/>即平均生成1位目标随机数需要消耗24/7位二元无偏随机数。
本基于哈夫曼编码的高效随机数生成方法,包括以下步骤:
步骤1:将概率比表示为最简整数权重比6:1;
步骤2:确定哈夫曼树的深度为3,添加无效符号Z,对应权重为1;
步骤3:由于权重6不是2的方次,需细分。符号1细分为符号11、12,权重分别为4、2。其它符号无需细分;
步骤4:构建的哈夫曼树与编码见图2中的(例2)部分;
步骤5:根据公式计算得最终生成目标随机数效率优于传统方法的7/24。此时平均生成1位加权随机数需要消耗2位二元无偏随机数,而传统方法需要约3.5位。例如:假设有一个二元无偏随机数发生器产生的序列B={10011111100...},根据哈夫曼解码可得细分随机数序列X″={12,11,Z1,21,11...},扩展随机数序列X′={1,1,Z,2,1...},再去除无效符号输出目标随机数序列X={1,1,2,1...}。此时生成4位目标随机数消耗了10位二元无偏随机数。
发明的保护范围包括但不限于以上实施方式,本发明的保护范围以权利要求书为准,任何对本技术做出的本领域的技术人员容易想到的替换、变形、改进均落入本发明的保护范围。
Claims (1)
1.一种基于哈夫曼编码的高效随机数生成方法,用于信息安全领域,其特征包括以下步骤:
1)整数权重比值表示:假设需要产生的随机数S有t个有效符号,S={S1,S2,...,St},t为整数,t≥2,对应的概率分别为P={p1,p2,...,pt},将比值p1∶p2∶...∶pt表示为最简整数权重比值W,W={w1:w2:...:wt},其中wi(i=1,2,...,t)均为正整数,且最大公约数gcd(w1,w2,...,wt)=1;如果原始概率比值无法使用整数权重比值表示,则根据实际需要在适当的精度下取得近似整数比值或放弃本方法;
2)随机数扩展:对整数权重比值w求和ws,ws=w1+w2+…+wt,计算哈夫曼的深度d,d为满足2d-1<ws≤2d的正整数;如果ws<2d,添加一个无效符号sz,对应的整数权重比值为wz=2d-ws;如果ws=2d,无需添加无效符号,为统一表示也可认为添加一个无效符号z,其权重比值wz为0;此时随机数扩展为t+1个符号S′={S1,S2,...,St,SZ},称为扩展符号,对应的概率为整数权重比值为W′={w1:w2:...:wt:wz},总权重为2d,有效权重占比RW=wS/2d;
3)随机数细分:在哈夫曼树中,深度为l的节点对应的概率为2-l,而往往不具有这样的形式,但是,可以将该符号以及对应的概率进行细分,每个细分后的符号的概率具有这样的形式,具体方法是,将每个wi(i=1,2,...,t,Z)按照二进制展开为ni个不同的2的方次的和,即/>其中/>对应的将符号Si(i=1,2,...,t,Z)细分为ni个不同细分符号/>对应的整数权重分别为/>概率为在哈夫曼树中的深度为/>细分符号总个数为n=n1+n2+…+nt+nZ,所有细分符号的集合记为S″={Sij:i=1,2,...,t,Z;j=1,2,...,ni},对应的概率为/>
4)哈夫曼树构造:将细分后的概率空间中的每个细分符号Sij(i=1,2,...,t,Z;j=1,2,...,ni)看作叶子节点,在二叉树中的深度为d-eij,构造出的完全二叉树即为哈夫曼树T;将连接每个父节点与其子节点的两条边标记为0与1,从根节点到叶子节点的路径的标记序列Cij即为该叶子节点对应细分符号的码字,称为哈夫曼码;对所有的细分符号S″={Sij:i=1,2,...,t,Z;j=1,2,...,ni},确定对应的哈夫曼码C={Cij:i=1,2,...,t,Z;j=1,2,...,ni};定义哈夫曼树T的平均深度为其中cl为哈夫曼树T中深度为l的叶子节点的个数;实际上,哈夫曼树T的平均深度为也等于细分后概率空间的香农熵H(S”),其中H是香农信息熵函数;
5)随机数生成:使用二元无偏随机数发生器产生0/1二元随机数序列B=B(1)B(2)B(3)B(4)...,B(i)∈{0,1},按照构造的哈夫曼码c进行解码;由于哈夫曼编码是一种前缀码,可以解码得到唯一的细分随机数序列X″=S″(1)S″(2)S″(3)S″(4)...,S″(i)∈S″,i=1,2,...;随后将每个细分符号S″(i)∈S″替换为细分前的扩展符号S′(i)∈S′,得到扩展随机数序列X′=S′(1)S′(2)S′(3)S′(4)…,S′(i)∈S′,再舍弃添加的无效符号Sz,得到最终的加权随机数序列X=S(1)S(2)S(3)S(4)...,S(i)∈S即为满足要求的加权随机数序列;定义哈夫曼转化效率为RT=1/d(T),其意义是平均每一位二元无偏随机数可以转化为RT位细分随机数,整体由二元无偏随机数转化为加权随机数的效率为R=RT*RW。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910938634.4A CN110727414B (zh) | 2019-09-30 | 2019-09-30 | 基于哈夫曼编码的随机数生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910938634.4A CN110727414B (zh) | 2019-09-30 | 2019-09-30 | 基于哈夫曼编码的随机数生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110727414A CN110727414A (zh) | 2020-01-24 |
CN110727414B true CN110727414B (zh) | 2023-12-08 |
Family
ID=69218613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910938634.4A Active CN110727414B (zh) | 2019-09-30 | 2019-09-30 | 基于哈夫曼编码的随机数生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110727414B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112631551B (zh) * | 2020-12-29 | 2023-05-30 | 平安科技(深圳)有限公司 | 随机数生成方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2460863A1 (en) * | 2001-09-25 | 2003-04-03 | 3927296 Canada Inc. | A cryptosystem for data security |
CN1582549A (zh) * | 2001-08-31 | 2005-02-16 | 宽带物理公司 | 调制解调器接收机中非线性失真的补偿 |
KR20060028750A (ko) * | 2006-02-28 | 2006-03-31 | 노키아 코포레이션 | 허프만 부호화 및 복호화 |
KR20160106229A (ko) * | 2015-03-02 | 2016-09-12 | 김정훈 | 문맥기반 분포데이터의 블럭화를 이용한 허프만 부호화의 효율화 방법 및 그 장치 |
CN107565973A (zh) * | 2017-08-01 | 2018-01-09 | 中国人民解放军国防科学技术大学 | 一种结点可扩展的哈夫曼编码的实现方法及电路结构 |
CN109979540A (zh) * | 2018-11-29 | 2019-07-05 | 天津大学 | 一种dna信息存储编码方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7881544B2 (en) * | 2006-08-24 | 2011-02-01 | Dell Products L.P. | Methods and apparatus for reducing storage size |
US9298722B2 (en) * | 2009-07-16 | 2016-03-29 | Novell, Inc. | Optimal sequential (de)compression of digital data |
US9438413B2 (en) * | 2010-01-08 | 2016-09-06 | Novell, Inc. | Generating and merging keys for grouping and differentiating volumes of files |
US20110052087A1 (en) * | 2009-08-27 | 2011-03-03 | Debargha Mukherjee | Method and system for coding images |
-
2019
- 2019-09-30 CN CN201910938634.4A patent/CN110727414B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1582549A (zh) * | 2001-08-31 | 2005-02-16 | 宽带物理公司 | 调制解调器接收机中非线性失真的补偿 |
CA2460863A1 (en) * | 2001-09-25 | 2003-04-03 | 3927296 Canada Inc. | A cryptosystem for data security |
KR20060028750A (ko) * | 2006-02-28 | 2006-03-31 | 노키아 코포레이션 | 허프만 부호화 및 복호화 |
KR20160106229A (ko) * | 2015-03-02 | 2016-09-12 | 김정훈 | 문맥기반 분포데이터의 블럭화를 이용한 허프만 부호화의 효율화 방법 및 그 장치 |
CN107565973A (zh) * | 2017-08-01 | 2018-01-09 | 中国人民解放军国防科学技术大学 | 一种结点可扩展的哈夫曼编码的实现方法及电路结构 |
CN109979540A (zh) * | 2018-11-29 | 2019-07-05 | 天津大学 | 一种dna信息存储编码方法 |
Non-Patent Citations (3)
Title |
---|
基于二叉排序树的哈夫曼编码;王防修;周康;;武汉工业学院学报(04);全文 * |
基于哈夫曼编码的选择算法;王防修;刘春红;;武汉轻工大学学报(02);全文 * |
改进的四进制哈夫曼算法;胡智宏;尹小正;路立平;;微型机与应用(10);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110727414A (zh) | 2020-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1147612A1 (en) | Code book construction for variable to variable length entropy encoding | |
CN107124251B (zh) | 一种基于任意内核的极化码编码方法 | |
CN110727414B (zh) | 基于哈夫曼编码的随机数生成方法 | |
JP2006262002A (ja) | 符号化方法、復号化方法および符号化システム | |
CN103490845A (zh) | 基于加权处理的改进型Logistic-Map混沌扩频序列产生装置及方法 | |
CN111090415B (zh) | 一种基于区间编码的高效随机数生成方法 | |
CN115145637A (zh) | 一种二进制二极码或三极码分级构建指令集操作码和地址码的方法 | |
US20130222159A1 (en) | Entropy method of binary-ternary lossless data coding | |
Kabir et al. | Freeman chain code with digits of unequal cost | |
Pae et al. | Randomizing functions: Simulation of a discrete probability distribution using a source of unknown distribution | |
Hameed et al. | A new lossless method of Huffman coding for text data compression and decompression process with FPGA implementation | |
CN110417417A (zh) | 一种新的(72,36,14)准循环码的构造 | |
Kabir et al. | Effects of unequal bit costs on classical huffman codes | |
Uchida | Source code with cost as a nonuniform random number generator | |
Jaradat et al. | A Simple Binary Run‐Length Compression Technique for Non‐Binary Sources Based on Source Mapping | |
JP3350385B2 (ja) | 符号生成方法および符号化方法 | |
Singla et al. | Data compression modelling: Huffman and Arithmetic | |
CN107612658B (zh) | 一种基于b类构造格型码的高效编码调制与译码方法 | |
Chen et al. | Context quantization based on the modified genetic algorithm with K-means | |
Zhou et al. | Variable-length extractors | |
Ouahada et al. | Viterbi decoding of ternary line codes | |
HAMEED et al. | HIGH PERFORMANCE OF CODING AND DECODING PROCESS FOR DATA COMPRESSION USING VARIABLE IN LENGTH CODING | |
CN110417420A (zh) | 一种新的准循环(72,36,14)码的构造 | |
CN110417419A (zh) | 一种新的线性分组码(72,36,14)准循环码的构造 | |
Brémaud et al. | Coding Trees |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |