随机数产生方法、随机数选取方法及相关电子装置的制作方法

文档序号:6466681阅读:180来源:国知局

专利名称::随机数产生方法、随机数选取方法及相关电子装置的制作方法
技术领域
:本发明是有关于一种随机数产生装置以及随机数产生方法,特别是有关于一种应用于电子装置的随机数产生装置以及随机数产生方法。
背景技术
:随着电子装置的发展,随机数(randomdata)被应用于电脑安全防护等领域,特别在电脑安全防护的领域上,用以提供具有不易预测性以使数据安全传输,因此可产生一定随机度(random)的随机数序列(Sequence)便显得格外重要。—般而言,对于一随机数产生器(randomdatagenerator)的最基本要求是其每一次所产生的随机数值皆没有规律可循,以符合所述的不可预期或不规则现象的特性。所述的随机数产生器或随机数产生函数的初始值通常可以藉由指定随机数序列的种子(seed)来决定,以符合特定需求。已知的随机数产生方法中,虽然可以藉由改变随机数序列的种子来产生不同的随机数序列,不过这些随机数序列通常都会有周期性的问题。当一个具有周期性的随机数序列被应用在某些数据处理时,可能会为这些数据处理带来副作用,而影响这些数据处理的效能。—般的随机数产生器利用一个非零的数值作为随机数的种子,再利用对种子进行移位或其他一些运算以得到一个随机数,使得相应的下一个种子也发生了变化,因此下一次取到的随机数值将有别于前一次。然而,所述随机数产生器的这些演算法并无法于电子装置开机时得到随机的种子,因此使得产生的随机数分布均匀性不佳。为了解决所述种子不够随机的问题,有些较大的电子装置可以利用即时时脉(realtimeclock,RTC)或者于关机时将目前的种子保留下来,当再次开机时便可得到新的种子。然而,对于低成本芯片而言,这样将增加硬件成本。若得不到随机的种子,则每次开机后取得的序列为固定的,从而失去了随机的效果。为了取到比较随机的随机数序列,可以在中断处理程序(interruptserviceroutine,ISR)及其他一些经常执行到的地方修改种子。然而,这样的修改方式并无法保证每个数值出现的分布均匀性。
发明内容本发明实施例提供一种易于实现且具有较佳随机数分布均匀性的随机数产生方法与用于产生随机数的电子装置。依照本发明一实施例,提出一种随机数产生方法,适用于一电子装置。首先,提供一n与m,以产生一候选数值群组,其中候选数值群组包含nm个连续数值且n、m为整数。接着,将候选数值群组划分成n个候选子群组,每一候选子群组中包含nm个连续数值中的nm—工个连续数值。将n个候选子群组分别写入至电子装置的一存储单元。接着,依据一预定选取规则,由存储单元中选择对应于预定选取规则的一候选子群组的一数值以产生一随机数,其中选取的候选子群组是选自于n个候选子群组的其中一者且数值是为候选子群组对应的nm—1个连续数值的其中一者。依照本发明另一实施例,提出一种电子装置,用于产生一随机数。电子装置包括一处理单元与一随机数产生器。处理单元可产生一随机数表。随机数产生器用以依据所述随机数表产生一随机数。当欲产生一随机数时,处理单元致使随机数产生器依据一种子以及随机数表,产生随机数,且随机数表包含nm个连续数值,且划分成n个候选子群组,每一候选子群组中包含n"1个连续数值的n"1—1个连续数值并且每一候选子群组中的每一数值为唯一,且n、m为整数。依照本发明再一实施例,提供一种随机数选取方法,适用于一电子装置。首先,提供一随机数表,其中随机数表包含nm个连续数值,且划分成n个候选子群组,每一候选子群组中包含nm个连续数值的nm—1个连续数值并且每一候选子群组中的每一数值为唯一,且n、m为整数。接着,由随机数表中选取一种子。之后,再由随机数表中,得到对应种子的一数值,再对得到的数值执行一预定运算,以产生一随机数。图1是显示根据本发明一实施例的电子装置的示意图。图2A是显示根据本发明一实施例的随机数表。图2B是显示根据本发明实施例的随机数表的数值对应关系示意图。图2C是显示根据本发明另一实施例的随机数表。图3是显示根据本发明一实施例的随机数表产生方法的流程图。图4是显示根据本发明一实施例的随机数选取方法的流程图。附图标号100电子装置;110处理单元;120存储单元;122种子;124、224—1、224—2随机数表;130随机数产生器;Tl、T2、T3、T4、T5候选子群组;S310-S330步骤;S410-S450步骤。具体实施例方式为让本发明的所述和其他目的、特征、和优点能更明显易懂,下文特举出实施例,并配合所附附图,作详细说明如下图1是显示根据本发明一实施例的电子装置的示意图。电子装置100中至少包括一处理单元110、一存储单元120以及一随机数产生器130。处理单元IIO可用以执行本发明一实施例所述的随机数产生方法以及随机数选取方法。存储单元120中可储存有一随机数表124以及一种子122(seed),其中种子122可用以当作随机数表124的表格索引以查询随机数表,从而从随机数表124中得到一对应的数值作为产生的随机数。其中,随机数表124包含nm个连续数值,且划分成n个候选子群组,每一候选子群组中包含nm个连续数值中的nm—1个连续数值并且每一候选子群组中的每一数值为唯一,且m、n为整数。也就是说,于随机数表中,每个数值皆会出现且只出现一次。随机数表中的最大数值为表中数值个数减一,例如当随机数表中有256个数值时,其最大值便为255。值得注意的是,虽然本实施例中存储单元120是与随机数产生器130分开,但是在其他实施例中,存储单元120也可整合至随机数产生器130中。请参照图2A,是显示根据本发明一实施例的随机数表224_1。于本实施例中,假设n为2且m为3,因此随机数表224_1包含8个数值(23个),且数值的范围为0_7(23_1)。这8个数值将组成一候选数值群组。如图2A所示,候选数值群组被划分成2个候选子群组Tl以及T2,且候选子群组Tl包含数值4-7(由表格索引0至表格索引3),而候选子群组T2包含数值0-3(由表格索引4至表格索引7)。明显地,不论是候选子群组Tl或是候选子群组T2中的每一数值都是唯一的,且每一候选子群组T1中的数值于候选子群组T2中有一对应的数值。换言之,子群组T1以及子群组T2具有一对一的对应关系。其中,候选子群组T1的一数值与候选子群组T2的一对应数值形成一循环关系,藉由此循环关系,可縮小内部循环周期。请参照图2B,是显示图2A中的对应关系示意图。如图2B所示,候选子群组T1的数值4(表格索引0)与候选子群组T2的数值0(表格索引4)形成一循环关系。类似地,候选子群组T1的数值5(表格索引1)、数值6(表格索引2)以及数值7(表格索引3)则分别对应地与候选子群组T2的数值1(表格索引5)、数值2(表格索引6)以及数值3(表格索引7)形成一循环关系。依据此排列方式,则一循环(例如0〈->4)递增一特定值之后,将进入另一循环(例如1〈->5)。若由索引O开始依序取值,依据data=table[seed],seed=data+1的规律,可得到如下的结果4,1,6,3,0,5,2,7。举例来说,请参考图2B,表格索引0的数值为4,于是先得到数值结果为4。由于其数值为4,因此下一次的种子便为5(seed=data+1=4+l),而由表格索引5得到下一个数值结果为1,依此类推即可得到4,1,6,3,0,5,2,7的结果。图2C是显示根据本发明另一实施例的随机数表224—2。于本实施例中,假设n为3且m为2,因此随机数表224_2包含9个数值(32个),且数值的范围为0_8(32_1)。亦即,候选数值群组包含9个数值0-8。如图2C所示,候选数值群组划分成3个候选子群组T3-T5,并且候选子群组T3-T5分别包含数值3-5、6-8以及0_2。明显地,不论是候选子群组T3、候选子群组T4或是候选子群组T5中的每一数值都是唯一的。前述候选子群组T3-T5中所包含的数值仅是用以说明,并非用以限定本发明仅止于此。举例来说,候选子群组T3-T5也可分别包含数值6-8、0-2以及3-5。图3是显示根据本发明一实施例的随机数表产生方法的流程图300。前述随机数表产生方法可由处理单元110加以执行。首先,提供一n与m,以产生一候选数值群组(步骤S310)。候选数值群组包含nm个连续数值,且n、m为整数。举例来说,如图2A所示,随机数表224_1中共有8(23)个数值0-7,则其n与m分别为2与3,也就是候选数值群组中包含8个连续数值0-7。得到n与m的值之后,接着将候选数值群组划分成n个候选子群组(步骤S320)。其中,每一候选子群组中包含nm个连续数值中的nm—1个连续数值。举例来说,如图2A所示,候选子群组Tl以及T2分别包含候选数值群组的8个连续数值中的4个连续数值。最后,进行步骤330,将n个候选子群组分别写入至电子装置100的存储单元120的随机数表124中。随机数产生器130可于开机时或其他需要产生随机数的时候,依据一预定选取规则,由随机数表中选择对应于预定选取规则的一候选子群组中的一数值以产生一随机数。当欲产生一随机数时,处理单元110致使随机数产生器130执行如下实施例所述的随机数选取方法,利用处理单元指定的种子或储存于存储单元120中的种子122产生一随机数。图4是显示根据本发明一实施例的随机数选取方法的流程图400。首先,如步骤S410,提供一随机数表,其中随机数表(如图2A或图2C)包含nm个连续数值,且划分成n个候选子群组,每一候选子群组中可包含nm个连续数值的nm—1个连续数值并且每一候选子群组中的每一数值为唯一。接着,如步骤S420,由随机数表中,选取一种子(seed)。于此步骤中,可于数值O-(nm-l)的范围内选取一任意数值,作为种子。接着,如步骤S430,利用选取的种子当作表格索引,由随机数表中得到对应种子的一数值。接着,如步骤S440,对数值执行一预定运算,以产生一随机数。举例来说,可将数值与一非零的特定值执行异或(XOR)的逻辑运算,来产生随机数。当产生随机数之后,如步骤S450,将种子递增一数值,以作为下一次产生开机随机随机数的种子。于是当下次需要产生随机数时,便可以利用新的种子来查询随机数表,再依据实施例所述的随机数选取方法产生新的随机数。除了将种子递增一数值以产生新的种子之外,也可以在执行特定的程序例如中断处理程序(interruptserviceroutine,ISR)或待机(idle)程序时更改种子的值,以产生新的种子。举例来说,于一实施例中,可于执行特定中断处理程序时,以目前的种子当作表格索引,藉此由随机数表中得到一对应的数值作为新的种子,但不限于此。举例来说,假设使用图2A的随机数表224_1,初始时(开机时),没有种子,由处理单元110由随机数表224_1的数值范围中任选一个数值4作为种子。接着,随机数产生器130利用种子(数值4)为表格索引,于随机数表224_1中得到位置4的对应数值为0。随机数产生器130可以以此数值0当作产生的随机数,或者再将数值0与一个数值0x5进行异或运算,得到数值5,并以数值5当作产生的随机数。产生完随机数之后,接着,随机数产生器130将种子加上一个既定数值(例如加一),产生新的种子-数值5。新的种子会被储存至存储单元120中。当下一次要再产生随机数时,此时已有种子,因此随机数产生器130利用种子(数值5)为表格索引,于随机数表224_1中得到位置5的对应数值为1。类似地,随机数产生器130可以以此数值1当作产生的随机数,或者再将数值1与一个数值0x5进行异或运算,得到数值4,并以数值4当作产生的随机数。产生完随机数之后,接着,随机数产生器130将种子加上一个既定数值(例如加一),产生新的种子-数值6。藉由不同的种子,可于每次产生新的随机数。若于产生随机数之前先执行了特定的中断处理程序,则种子将依据表格中的关系进行更改,可得到更随机的随机数。于一实施例中,为了得到较佳的随机数随机性,可于中断处理程序中按表格索引与数值的关系修改种子,且对所取的随机数进行异或运算。举例来说,通过中断处理程序修改种子后,将原随机数序列4,5,6,7,0,1,2,3变为4,1,6,3,0,5,2,7,再对其与5作异或(XOR)运算后得新随机数序列1,4,3,6,5,0,7,2。实际应用中,由于中断程序执行情况不定,所以序列也不定。综上所述,根据本发明实施例的随机数产生及选取方法,利用特殊排列的随机数表,在随机数表中增加循环关系,可縮小内部循环周期,破解固定样本(pattern)的取值方式。此外,本发明实施例更利用减少随机数排列组合个数以提高每个数值被取到的机率,增加随机数分布的均匀性。因此,本发明实施例所述的内容可应用于低成本的随机数产生装置中,无须增加额外的硬件成本,可轻易地加以实现。本发明虽以实施例揭露如上,然其并非用以限定本发明的范围,任何本领域技术人员,在不脱离本发明的精神和范围内,当可做些许的更动与润饰,因此本发明的保护范围以权利要求所界定范围为准。权利要求一种随机数产生方法,其特征在于,所述随机数产生方法适用于一电子装置,所述随机数产生方法包括提供一n与m,以产生一候选数值群组,其中所述候选数值群组包含nm个连续数值且n与m为整数;将所述候选数值群组划分成n个候选子群组,每一所述候选子群组中包含所述nm个连续数值中的nm-1个连续数值;将所述n个候选子群组分别写入至所述电子装置的一存储单元;以及依据一预定选取规则,由所述存储单元中选择对应于所述预定选取规则的一候选子群组的一数值以产生一随机数,其中所述候选子群组是选自于所述n个候选子群组的其中一者且所述数值是为所述候选子群组的所述nm-1个连续数值的其中一者。2.如权利要求1所述的随机数产生方法,其特征在于,产生所述随机数的步骤包括由所述存储单元中,选取一种子;由所述存储单元中,得到对应所述种子的一第一数值;以及对所述第一数值执行一预定运算,以产生所述随机数。3.如权利要求2所述的随机数产生方法,其特征在于,所述随机数产生方法更包括将所述种子递增一数值,以作为下一次产生随机数的种子。4.如权利要求2所述的随机数产生方法,其特征在于,所述预定运算是为一逻辑运算。5.如权利要求4所述的随机数产生方法,其特征在于,所述逻辑运算是为异或运算。6.如权利要求2所述的随机数产生方法,其特征在于,所述随机数产生方法更包括执行一中断处理程序,且于执行所述中断处理程序时,执行一运算以更改所述种子。7.如权利要求6所述的随机数产生方法,其特征在于,更改所述种子的方式为利用所述种子,由所述存储单元中得到对应所述种子的一第一数值,并将所述种子更改为所述第一数值。8.如权利要求2所述的随机数产生方法,其特征在于,对所述第一数值执行所述预定运算以产生所述随机数的步骤更包括对所述第一数值执行所述预定运算,以得到一第二数值;以及将所述第二数值作为所述种子,以由所述存储单元中得到对应所述种子的一第三数值作为所述随机数。9.如权利要求l所述的随机数产生方法,其特征在于,将所述候选数值群组划分成n个候选子群组的步骤更包括依序由数值0至nm-l中取出nm—1个连续数值以产生所述n个候选子群组的其中一者,从而划分出所述n个候选子群组。10.如权利要求9所述的随机数产生方法,其特征在于,所述随机数产生方法更包括对所述n个候选子群组的每一候选子群组执行一异或运算,以使所述候选子群组的所述n"1—1个连续数值重新排列。11.一种电子装置,其特征在于,所述电子装置用于产生一随机数,包括一处理单元,用以产生一随机数表以及一随机数产生器,用以依据所述随机数表产生一随机数,其中当欲产生一随机数时,所述处理单元致使所述随机数产生器依据一种子以及所述随机数表,产生所述随机数,且所述随机数表包含nm个连续数值,且划分成n个候选子群组,每一所述候选子群组中包含所述nm个连续数值的nm—1个连续数值并且每一所述候选子群组中的每一数值为唯一,且n、m为整数。12.如权利要求11所述的电子装置,其特征在于,所述电子装置更包括一存储单元,用以储存所述种子以及所述随机数表。13.如权利要求12所述的电子装置,其特征在于,所述随机数产生器更于产生所述随机数之后,将所述存储单元中的所述种子递增一数值。14.如权利要求13所述的电子装置,其特征在于,所述处理单元更执行至少一中断处理程序,并且所述处理单元更于执行所述中断处理程序时,以所述存储单元中的所述种子为一表格索引,由所述随机数表中得到一对应数值,并将所述对应数值设为所述种子。15.—种随机数选取方法,其特征在于,所述随机数选取方法适用于一电子装置,包括提供一随机数表;由所述随机数表中,选取一种子;由所述随机数表中,得到对应所述种子的一第一数值;以及对所述第一数值执行一预定运算,以产生一随机数;其中所述随机数表包含nm个连续数值,且划分成n个候选子群组,每一所述候选子群组中包含所述nm个连续数值的n"1—工个连续数值并且每一所述候选子群组中的每一数值为唯一,且n、m为整数。16.如权利要求15所述的随机数选取方法,其特征在于,所述随机数选取方法更包括将所述种子递增一数值,以作为下一次产生随机数的种子。17.如权利要求15所述的随机数选取方法,其特征在于,所述预定运算是为一异或运算。18.如权利要求15所述的随机数选取方法,其特征在于,所述电子装置更执行至少一中断处理程序,且于执行所述中断处理程序时,执行一运算以更改所述种子。19.如权利要求18所述的随机数选取方法,其特征在于,更改所述种子的方式是依据所述种子,由所述存储单元中得到对应所述种子的一第一数值,并将所述一第一数值设为所述种子。全文摘要一种随机数产生方法、随机数选取方法及相关电子装置,所述随机数产生方法,适用于一电子装置。首先,提供一n与m,以产生一候选数值群组,其中候选数值群组包含nm个连续数值且n、m为整数。接着,将候选数值群组划分成n个候选子群组,每一候选子群组中包含nm个连续数值中的nm-1个连续数值。将n个候选子群组分别写入至电子装置的一存储单元。接着,依据一预定选取规则,由存储单元中选择所述候选子群组的一的数值以产生一随机数。文档编号G06F7/58GK101714073SQ20081014983公开日2010年5月26日申请日期2008年10月8日优先权日2008年10月8日发明者张文武申请人:新唐科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1