CN116301724B - 一种不重复伪随机数的生成方法、装置、设备及存储介质 - Google Patents
一种不重复伪随机数的生成方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116301724B CN116301724B CN202310270076.5A CN202310270076A CN116301724B CN 116301724 B CN116301724 B CN 116301724B CN 202310270076 A CN202310270076 A CN 202310270076A CN 116301724 B CN116301724 B CN 116301724B
- Authority
- CN
- China
- Prior art keywords
- sequence
- random
- group
- elements
- grouping
- 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
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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明公开了一种不重复伪随机数的生成方法、装置、设备及存储介质,本发明属于芯片验证、软件技术领域。本发明通过对芯片测试用随机激励序列的分组,对分组顺序随机,而不是对数据随机,从而使得内存仅需要消耗分组大小的内存,即每一轮只处理分组大小数量的数据,且可在极短时间内得到一轮不重复随机数,大大降低了内存消耗和CPU执行时间,从而实现在超大芯片测试用随机激励序列的下,利用有限的内存和CPU执行时间,生成一个完全不重复的随机序列。
Description
技术领域
本发明属于芯片验证、软件技术领域,具体涉及一种不重复伪随机数的生成方法、装置、设备及存储介质。
背景技术
在计算机科学领域,随机数作为基础设施可谓无处不在。比如彩票系统,底层就需要用到随机数来产生得奖号码。物理仿真软件,需要用到随机数来模拟自然现象中的火焰。区块链技术中需要用到随机数来做安全保证。
尤其是在芯片验证领域中,为了保证设计与验证的完备性,业界主流的验证方法主要是以UVM(Universal Verification Methodology)为代表的验证方法学。通常使用随机约束的方式,自动产生受控的随机输入,从而验证芯片设计。
根据随机数的产生方式,大致可以分为2种:真随机和伪随机。前者通过某种特定传感器采集现实世界中的随机事件,例如鼠标移动的轨迹、空气中噪音、宇宙微波背景辐射,甚至可以利用量子理论中测不准原理获取随机数。而后者是利用某种数学公式或者算法产生数值序列,当初始条件确定的时候,其序列是确定的。虽然在数学意义上伪随机并不随机,但如果可以通过统计学意义上的校验,在大多数场合是可以当做真随机数使用的。
以上两种方法已经可以满足大多数业务场景的需求,但是在芯片验证领域的某些验证场景中,由于其“真”随机性,反而无法满足需求。例如需要对52张扑克牌随机洗牌的时候,目前业界通用算法是产生52个元素的序列,然后根据随机算法重新排队。在小范围区间没有问题,但当芯片测试用随机激励序列的随机样本空间巨大的时候,目前的算法会耗费计算机的大量内存来缓存信息。
发明内容
针对芯片验证领域的芯片测试用随机激励序列的随机样本空间巨大的情况下,产生不重复的伪随机数的同时节省内存,本发明提供了解决上述问题的一种不重复伪随机数的生成方法、装置、设备及存储介质。
本发明通过下述技术方案实现:
一种不重复伪随机数的生成方法,包括:
获取一个分组序列,所述分组序列的大小根据芯片测试用随机激励序列的大小和随机质量要求确定;
将芯片测试用随机激励序列的数据映射到所述分组序列;
对组内元素位置序号随机,确定组内元素取值顺序;
随机步骤:对所述分组序列洗牌,得到一个随机序列;
遍历步骤:对所述随机序列进行随机,确定本轮循环所述随机序列中的取值起始位置,并从所述取值起始位置开始顺序遍历所述随机序列,根据所述组内元素取值顺序确定本轮循环对应的组内元素位置序号,遍历时每组取所述组内元素位置序号对应的元素;
重复随机步骤和遍历步骤,直到遍历完分组中的所有元素位置,即可生成一个不重复的随机激励序列。
本发明通过对芯片测试用随机激励序列的样本空间分组,对分组顺序随机,而不是对数据随机,从而使得内存仅需要消耗分组大小的内存,即每一轮只处理分组大小数量的数据,且可在极短时间内得到一轮不重复随机数,大大降低了内存消耗和CPU执行时间,从而实现在芯片测试用随机激励序列的超大样本空间下,利用有限的内存和CPU执行时间,生成一个完全不重复的随机序列。
作为优选实施方式,本发明的分组序列的大小与随机质量、占用内存和耗费CPU时间呈正相关。
作为优选实施方式,本发明的将芯片测试用随机激励序列的数据映射到所述分组序列,具体为:
根据芯片测试用随机激励序列的的大小和所述分组序列的大小,计算得到每组元素个数;
按照每组元素个数,将芯片测试用随机激励序列的的数据顺序映射到所述分组序列的各个分组中。
作为优选实施方式,本发明的每组元素个数等于所述芯片测试用随机激励序列的的大小除以所述分组序列的大小;
如果计算值是整数,则该计算值即为每组元素个数;
如果计算值不是整数,则向上取整并将取整得到的整数作为每组元素个数。
作为优选实施方式,本发明的对组内元素位置序号随机,确定组内元素取值顺序,具体为:
按照所述每组元素个数,确定组内元素位置序号;
对所述组内元素位置序号洗牌,从而确定组内元素取值顺序。
作为优选实施方式,本发明的方法适用于芯片验证领域的海量芯片测试用随机激励序列的验证场景。
作为优选实施方式,本发明的方法中内存占用大小仅由所述分组序列的大小决定,与所述芯片测试用随机激励序列的的大小无关。
第二方面,本发明提出了一种不重复伪随机数的生成装置,所述装置包括:
分组模块,用于获取一个分组序列,所述分组序列的大小根据芯片测试用随机激励序列的的大小和随机质量要求确定;
映射模块,用于将芯片测试用随机激励序列的的数据映射到所述分组序列;
组内随机模块,用于对组内元素位置序号随机,确定组内元素取值顺序;
组间随机模块,用于对所述分组序列洗牌,得到一个随机序列;
遍历模块,用于对所述组间随机模块输出的随机序列进行随机,确定本轮循环该随机序列中的取值起始位置,并从该取值起始位置开始顺序遍历该随机序列,根据组内元素取值顺序确定本轮循环对应的组内元素位置序号,遍历时每组取该组内元素位置序号对应的元素;
判断模块,用于判断所述遍历模块是否遍历完分组中的所有元素,如果是则驱动输出模块输出一个不重复的随机激励序列;否则驱动所述组间随机模块进行下一次随机。
第三方面,本发明提出了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现本发明上述方法的步骤。
第四方面,本发明提出了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本发明上述方法的步骤。
本发明具有如下的优点和有益效果:
1、本发明通过对芯片测试用随机激励序列的样本空间分组,并对分组顺序随机,而不是对数据随机的方式,从而使得内存空间占用仅由分组大小决定,与芯片测试用随机激励序列的大小无关,能够实现在有限的内存空间和CPU执行时间,生成一个完全不重复的随机序列,特别适用于芯片验证领域的需要海量测试用激励数据序列的验证场景。
2、本发明的内存空间消耗和待随机的芯片测试用激励数据序列大小无关,无论是10万还是10亿,内存空间消耗只和分组大小相关。当分组大小N在256(含)以内时,只需要N字节内存;当分组大小N>256且N<=65536时,只需要2N字节内存;分组大小N>=65536时,只需要4N字节内存。
3、本发明的整体时间复杂度为O(n),但由于分组计算,每一轮只处理分组大小N个数据,可以在极短时间内得到一轮不重复随机数,从而无需实现整个芯片测试用随机激励序列的随机,即可实现随取随用,直到把所有把随机空间完全覆盖。
4、本发明不仅可应用于芯片验证技术领域,也可以应用于软件算法等任何需要产生不重复随机数的场合中。
附图说明
此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定。在附图中:
图1为本发明实施例的方法流程示意图;
图2为本发明第一实施方式的分组序列示意图;
图3为本发明第一实施方式的芯片测试用随机激励序列的数据映射到分组序列结果图;
图4为本发明第一实施方式的分组序列第一次洗牌结果图;
图5为本发明第一实施方式的分组序列第二次洗牌结果图;
图6为本发明第二实施方式的芯片测试用随机激励序列的数据映射到分组序列结果图;
图7为本发明第二实施方式的组内元素取值顺序随机结果图;
图8为本发明第二实施方式的分组序列第一次洗牌结果图;
图9为本发明第二实施方式的分组序列第二次洗牌结果图;
图10为本发明第二实施方式的分组序列第三次洗牌结果图;
图11为本发明第二实施方式的分组序列第四次洗牌结果图;
图12发明实施例的装置原理框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
实施例:
目前产生不重复随机数的方法,基本可以归纳为:先产生一个连续的序列,例如[0,1,2,3,4,5],然后对该序列进行洗牌,洗牌中需要用到洗牌算法和洗牌种子。洗牌种子可以从某个随机算法中得到,每次洗牌的种子不一样,保证每次洗牌结果不一样。洗牌算法也是一种随机算法,可以认为洗牌结果无法直接预测。
在小样本空间下,洗牌算法的质量仅由2个因素相关:即洗牌种子的随机性和洗牌算法的随机性。目前关于这2个算法的研究都已经非常深入了,本文不再赘述。
但是当样本空间上百万、亿,甚至更大的时候,计算机需要消耗大量的内存来存储这个序列,便于洗牌。同时由于其是一次性洗全部的牌,在初次使用随机数时,需要较长等待时间。目前典型的洗牌算法,其需要的时间复杂度和空间复杂度是O(n)。随着样本空间的激增,其需要的内存容量和CPU时间也随之激增。
假设用户需要在1~1000万之间产生不重复的随机数。那么现有算法会先产生1000万个元素,然后缓存在内存中,实际消耗内存10000000*32/1024/1024=305.18MB内存。然后再对这1000万个元素随机洗牌。无论用户最终运行过程中是否完全用到这1000万个元素。这样处理,将消耗大量的内存和CPU时间。尤其是芯片验证中,同一台高性能服务器上会同时运行多个测试用例,每个测试用例里有大量的随机激励。在芯片验证领域,既有基础的直接测试,即给定具体测试参数直接输入激励,例如在4位加法器中,测试0+0,0+1,0+2,……。这种测试方法简单直接,但只适用于样本空间较小的场景。也有随机测试,即在某个区间内,随机选取某些值作为测试激励,例如在16位加法器中,随机测试1343+8078。通常而言芯片验证中,会组合使用这两种测试方法,例如在16位加法器中,对于比较关心的特殊点需要直接测试,对一般范围需要随机测试。
A:0,1,65535,65535,[2,65534]
B:0,1,65535,65535,[2,65534]
其中0、1、65535、65536,是我们比较关心的值,使用直接测试方法。其余区间,可以使用随机测试方法。当需要在2~65534之间随机取值的时候,传统的随机方法,随机得到的结果要么可能有重复,尤其是大量运行的前提下,导致芯片验证的可靠性下降,或者虽然可以不重复随机,但占用大量的内存空间。
基于此,本实施例提出了一种不重复伪随机数的生成方法,该方法能够在超大样本空间下,利用有限的内存空间和CPU执行时间,生成一个完全不重复的随机序列。
具体如图1所示,本实施例提出的方法具体包括如下步骤:
步骤1,获取一个分组序列,该分组序列的大小根据芯片测试用随机激励序列的大小和随机质量要求确定。
分组越大,则随机质量越高,但占用内存更大,且耗费CPU时间更多;分组越小,则随机质量越小,但占用内存更小,且耗费CPU时间更少。本实施例综合考虑随机质量、内存大小以及所需CPU时间,确定分组大小。
步骤2,将芯片测试用随机激励序列的数据映射到该分组序列。
根据芯片测试用随机激励序列的的大小和分组序列的大小,计算得到每组元素个数,按照每组元素个数,将芯片测试用随机激励序列的的数据顺序映射到各组中。
每组元素个数等于芯片测试用随机激励序列的的大小除以分组序列的大小,如果为整数,则该整数即为每组元素个数,如果不为整数,则向上取整并将得到的整数作为每组元素个数。
步骤3,对组内元素位置序号随机,确定组内元素取值顺序。
对组内元素取值顺序随机具体为:按照计算得到的每组元素个数,确定组内元素位置序号,对该组内元素位置序号洗牌,从而确定组内元素取值顺序,例如计算得到的每组元素个数为5个,则对位置序号{0,1,2,3,4}随机洗牌,假设得到{3,1,4,0,2},则后续遍历取值时,组内取值的顺序按照3->1->4->0->2,即第一轮循环时取组内位置序号为3的元素,第二轮循环时取组内位置序号为1的元素,第三轮循环时取组内位置序号为4的元素,第四轮循环时取组内位置序号为0的元素,第五轮循环时取组内位置序号为2的元素。
步骤4,对该分组序列洗牌,得到一个随机序列。
步骤5,对该随机序列进行随机,确定本轮循环该随机序列中的取值起始位置,并从该取值起始位置开始顺序遍历该随机序列,根据组内元素取值顺序确定本轮循环对应的组内元素位置序号,遍历时每组取该组内元素位置序号对应的元素,完成本轮循环遍历取值。
步骤6,重复步骤4-5,直到遍历完分组中的所有元素为止,即可生成一个完全不重复的随机激励序列。
本实施例提出的不重复伪随机数的生成原理是:本实施例通过对芯片测试用随机激励序列的大小分组,且仅对分组序列进行随机,即每一轮取值前均需要对分组序列进行洗牌,并随机确定取值起始位置,按照组内元素取值顺序进行每组元素的提取,基于上述原理可知:本实施例提出的方法仅需要消耗分组大小的内存,即芯片测试用随机激励序列的大小不影响内存的消耗,内存的消耗由分组大小决定,从而可实现在超大芯片测试用随机激励序列的下,利用有限的内存和CPU执行时间,生成一个完全不重复的随机序列。
本实施例以示例一对上述方法进行详细说明,该生成方法具体包括:
根据芯片测试用随机激励序列的大小和随机质量要求,确定分组大小N=16,根据该分组大小得到一个分组序列,如图2所示。
将大芯片测试用随机激励序列的数据M=32映射到该分组序列,根据芯片测试用随机激励序列的大小和分组大小,可以计算得到每组元素个数=M/N=32/16=2,即每组元素个数为2个,根据每组元素个数,将芯片测试用随机激励序列的数据按序映射到上述分组序列中,如图3所示。
根据每组元素个数确定组内元素位置序号为{0,1}。对该元素位置序号进行洗牌,确定组内元素取值顺序。例如,本实施例中确定的组内元素取值顺序为{1,0},即第一轮循环取组内元素位置序号为1的元素,第二轮循环取组内元素位置序号为0的元素。
对该分组序列洗牌,得到一个随机序列,如图4所示。
对图4所示的随机序列进行随机,确定该随机序列中的第一轮取值起始位置,例如,本实施例中确定的取值起始位置为8,即从位置序号为8的分组开始本轮循环遍历,从图4可以确定本轮循环遍历的分组顺序是12->1->9->15->8->10->6->5->14->4->2->7->11->13->0,组内取位置序号为1的元素,由图3的映射可知本轮循环遍历得到的首段序列是:25、7、3、19、31、17、21、13、11、29、9、5、15、23、27、1,因为一共16个分组,因此本轮取得16个元素。
再对该分组序列洗牌,得到一个随机序列,如图5所示。
对图5所示的随机序列进行随机,确定该随机序列中的第二轮取值起始位置,例如,本实施例中确定的取值起始位置为12,即从位置序号为12的分组开始本轮循环遍历,从图5可以确定本轮循环遍历的分组顺序是13->0->11->6->10->1->12->2->3->8->7->5->9->14->15->4,组内取位置序号为0的元素,由图3的映射可知本轮循环遍历得到的次段序列是:26、0、22、12、20、2、24、4、6、16、14、10、18、28、30、8,因为一共16个分组,因此本轮取得16个元素。
由于每组中元素个数均为2,因此遍历完0、1号元素,即可终止循环,得到最终随机序列:25、7、3、19、31、17、21、13、11、29、9、5、15、23、27、1、26、0、22、12、20、2、24、4、6、16、14、10、18、28、30、8。
本实施例以示例二对上述方法进行详细说明,该生成方法具体包括:
根据芯片测试用随机激励序列的大小和随机质量要求,确定分组大小N=7,根据该分组大小得到一个分组序列。
将大芯片测试用随机激励序列的数据M=25映射到该分组序列,根据芯片测试用随机激励序列的大小和分组大小,可以计算得到每组元素个数=M/N=25/7=3…4,向上取整得到每组元素个数为4个,根据每组元素个数,将芯片测试用随机激励序列的数据按序映射到上述分组序列中,如图6所示。
根据每组元素个数确定组内元素位置序号为{0,1,2,3}。对该元素位置序号进行洗牌,确定组内元素取值顺序,如图7所示,即本实施例中确定的组内元素取值顺序为{3,1,0,2}。
对该分组序列洗牌,得到一个随机序列,如图8所示。
对图8所示的随机序列进行随机,确定该随机序列中的第一轮取值起始位置,例如,本实施例中确定的取值起始位置为3,即从位置序号为3的分组开始本轮循环,从图8可以确定分组顺序是1->0->2->6->5->3->4,组内取序号为3的元素,则本轮循环遍历得到的元素序列是:7、3、11、{}、23、15、19,虽然有7个分组,但本轮只取到6个元素,因为分组6中只有1个元素,即序号为0的元素。
再对该分组序列洗牌,得到一个随机序列,如图9所示。
对图9所示的随机序列进行随机,确定该随机序列中的第二轮取值起始位置,例如,本实施例中确定的取值起始位置为6,即从位置序号为6的分组开始本轮循环,从图9可以确定分组顺序是0->3->1->4->6->5->2,组内提取序号为1的元素,则本轮提取的元素是:1、13、5、17、{}、21、9,虽然有7个分组,但本轮只取到6个元素,因为分组6中只有1个元素。
再对该分组序列洗牌,得到一个随机序列,如图10所示。
对图10所示的随机序列进行随机,确定该随机序列中的第三轮取值起始位置,例如,本实施例中确定的取值起始位置为2,即从位置序号为2的分组开始本轮循环,从图10可以确定分组顺序是4->3->1->6->5->0->2,组内提取序号为0的元素,则本轮提取的元素是:16、12、4、24、20、0、8,因为本轮分组内部序号取0,所以可以得到7个元素。
再对该分组序列洗牌,得到一个随机序列,如图11所示。
对图11所示的随机序列进行随机,确定该随机序列中的第四轮取值起始位置,例如,本实施例中确定的取值起始位置为1,即从位置序号为1的分组开始本轮循环取值,从图11可以确定分组顺序是6->5->1->3->4->0->2,组内提取序号为2的元素,则本轮提取的元素是:{}、22、6、14、18、2、10,虽然有7个分组,但本轮只取到6个元素,因为分组6中只有1个元素
由于每组中元素个数为4,因此遍历完0、1、2、3号元素,即可终止循环,得到最终随机序列:7、3、11、{}、23、15、19、1、13、5、17、{}、21、9、16、12、4、24、20、0、8、{}、22、6、14、18、2、10。
本实施例还提出了一种不重复伪随机数的生成装置,如图12所示,该装置包括:
分组模块,用于获取一个分组序列,该分组序列的大小根据芯片测试用随机激励序列的大小和随机质量要求确定;
映射模块,用于将芯片测试用随机激励序列的的数据映射到该分组序列;
组内随机模块,用于对组内元素位置序号随机,确定组内元素取值顺序;
组间随机模块,用于对该分组序列洗牌,得到一个随机序列;
遍历模块,用于对该组间随机模块输出的随机序列进行随机,确定本轮循环该随机序列中的取值起始位置,并从该取值起始位置开始顺序遍历该随机序列,根据组内元素取值顺序确定本轮循环对应的组内元素位置序号,遍历时每组取该组内元素位置序号对应的元素;
判断模块,用于判断该遍历模块是否遍历完分组中的所有元素,如果是则驱动输出模块输出一个完全不重复的随机激励序列;否则驱动组间随机模块进行下一次随机。
本实施例还提出了一种计算机设备,用于执行本实施例的上述方法。
计算机设备包括处理器、内存储器和系统总线;内存储器和处理器在内的各种设备组件连接到系统总线上。处理器是一个用来通过计算机系统中基本的算术和逻辑运算来执行计算机程序指令的硬件。内存储器是一个用于临时或永久性存储计算程序或数据(例如,程序状态信息)的物理设备。系统总线可以为以下几种类型的总线结构中的任意一种,包括存储器总线或存储控制器、外设总线和局部总线。处理器和内存储器可以通过系统总线进行数据通信。其中内存储器包括只读存储器(ROM)或闪存,以及随机存取存储器(RAM),RAM通常是指加载了操作系统和计算机程序的主存储器。
计算机设备一般包括一个外存储设备。外存储设备可以从多种计算机可读介质中选择,计算机可读介质是指可以通过计算机设备访问的任何可利用的介质,包括移动的和固定的两种介质。例如,计算机可读介质包括但不限于,闪速存储器(微型SD卡),CD-ROM,元素通用光盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁存储设备,或者可用于存储所需信息并可由计算机设备访问的任何其它介质。
计算机设备可在网络环境中与一个或者多个网络终端进行逻辑连接。网络终端可以是个人电脑、服务器、路由器、智能电话、平板电脑或者其它公共网络节点。计算机设备通过网络接口(局域网LAN接口)与网络终端相连接。局域网(LAN)是指在有限区域内,例如家庭、学校、计算机实验室、或者使用网络媒体的办公楼,互联组成的计算机网络。WiFi和双绞线布线以太网是最常用的构建局域网的两种技术。
应当指出的是,其它包括比计算机设备更多或更少的子系统的计算机系统也能适用于发明。
如上面详细描述的,适用于本实施例的计算机设备能执行不重复伪随机数的生成方法的指定操作。计算机设备通过处理器运行在计算机可读介质中的软件指令的形式来执行这些操作。这些软件指令可以从存储设备或者通过局域网接口从另一设备读入到存储器中。存储在存储器中的软件指令使得处理器执行上述的群成员信息的处理方法。此外,通过硬件电路或者硬件电路结合软件指令也能同样实现本发明。因此,实现本实施例并不限于任何特定硬件电路和软件的组合。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种不重复伪随机数的生成方法,其特征在于,包括:
获取一个分组序列,所述分组序列的大小根据芯片测试用随机激励序列的大小和随机质量要求确定;
将芯片测试用随机激励序列的数据映射到所述分组序列;
对组内元素位置序号随机,确定组内元素取值顺序;
随机步骤:对所述分组序列洗牌,得到一个随机序列;
遍历步骤:对所述随机序列进行随机,确定本轮循环所述随机序列中的取值起始位置,并从所述取值起始位置开始顺序遍历所述随机序列,根据所述组内元素取值顺序确定本轮循环对应的组内元素位置序号,遍历时每组取所述组内元素位置序号对应的元素;
重复随机步骤和遍历步骤,直到遍历完分组中的所有元素位置,即可生成一个不重复的随机激励序列。
2.根据权利要求1所述的一种不重复伪随机数的生成方法,其特征在于,所述分组序列的大小与随机质量、占用内存和耗费CPU时间呈正相关。
3.根据权利要求1所述的一种不重复伪随机数的生成方法,其特征在于,将芯片测试用随机激励序列的数据映射到所述分组序列,具体为:
根据芯片测试用激励数据序列的大小和所述分组序列的大小,计算得到每组元素个数;
按照每组元素个数,将芯片测试用激励数据序列的数据顺序映射到所述分组序列的各个分组中。
4.根据权利要求3所述的一种不重复伪随机数的生成方法,其特征在于,每组元素个数等于所述芯片测试用随机激励序列的大小除以所述分组序列的大小;
如果计算值是整数,则该计算值即为每组元素个数;
如果计算值不是整数,则向上取整并将取整得到的整数作为每组元素个数。
5.根据权利要求4所述的一种不重复伪随机数的生成方法,其特征在于,对组内元素位置序号随机,确定组内元素取值顺序,具体为:
按照所述每组元素个数,确定组内元素位置序号;
对所述组内元素位置序号洗牌,从而确定组内元素取值顺序。
6.根据权利要求1-5任一项所述的一种不重复伪随机数的生成方法,其特征在于,该方法适用于芯片验证领域的海量芯片测试用随机激励序列的验证场景。
7.根据权利要求1-5任一项所述的一种不重复伪随机数的生成方法,其特征在于,该方法中内存占用大小仅由所述分组序列的大小决定,与所述芯片测试用随机激励序列的大小无关。
8.一种不重复伪随机数的生成装置,其特征在于,所述装置包括:
分组模块,用于获取一个分组序列,所述分组序列的大小根据芯片测试用随机激励序列的大小和随机质量要求确定;
映射模块,用于将芯片测试用随机激励序列的数据映射到所述分组序列;
组内随机模块,用于对组内元素位置序号随机,确定组内元素取值顺序;
组间随机模块,用于对所述分组序列洗牌,得到一个随机序列;
遍历模块,用于对所述组间随机模块输出的随机序列进行随机,确定本轮循环该随机序列中的取值起始位置,并从该取值起始位置开始顺序遍历该随机序列,根据组内元素取值顺序确定本轮循环对应的组内元素位置序号,遍历时每组取该组内元素位置序号对应的元素;
判断模块,用于判断所述遍历模块是否遍历完分组中的所有元素,如果是则驱动输出模块输出一个不重复的随机激励序列;否则驱动所述组间随机模块进行下一次随机。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310270076.5A CN116301724B (zh) | 2023-03-16 | 2023-03-16 | 一种不重复伪随机数的生成方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310270076.5A CN116301724B (zh) | 2023-03-16 | 2023-03-16 | 一种不重复伪随机数的生成方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116301724A CN116301724A (zh) | 2023-06-23 |
CN116301724B true CN116301724B (zh) | 2023-09-26 |
Family
ID=86792125
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310270076.5A Active CN116301724B (zh) | 2023-03-16 | 2023-03-16 | 一种不重复伪随机数的生成方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116301724B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008070727A (ja) * | 2006-09-15 | 2008-03-27 | National Institute Of Information & Communication Technology | 乱数列群生成装置、通信システム、乱数列群生成方法、通信方法、ならびに、プログラム |
CN101692616A (zh) * | 2009-10-16 | 2010-04-07 | 西安电子科技大学 | 基于分组处理的伪随机序列的随机性检测方法 |
CN106776194A (zh) * | 2016-12-08 | 2017-05-31 | 上海东软载波微电子有限公司 | 寄存器位带的测试方法及系统 |
CN108415668A (zh) * | 2018-02-06 | 2018-08-17 | 珠海市杰理科技股份有限公司 | 芯片激励方法、装置、系统、计算机设备和存储介质 |
CN111611629A (zh) * | 2020-06-24 | 2020-09-01 | 中物院成都科学技术发展中心 | 一种芯片的物理指纹提取系统和方法 |
CN112884104A (zh) * | 2021-03-24 | 2021-06-01 | 南通大学 | 一种基于混沌加密的商品防伪二维码生成方法 |
CN113641693A (zh) * | 2021-08-20 | 2021-11-12 | 北京百度网讯科技有限公司 | 流式计算系统的数据处理方法及装置、电子设备和介质 |
CN115470106A (zh) * | 2022-08-17 | 2022-12-13 | 北京清微智能科技有限公司 | 一种可重构芯片的验证方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10466969B2 (en) * | 2017-05-08 | 2019-11-05 | Arizona Board Of Regents On Behalf Of Arizona State University | Tunable true random number generator using programmable metallization cell(s) |
-
2023
- 2023-03-16 CN CN202310270076.5A patent/CN116301724B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008070727A (ja) * | 2006-09-15 | 2008-03-27 | National Institute Of Information & Communication Technology | 乱数列群生成装置、通信システム、乱数列群生成方法、通信方法、ならびに、プログラム |
CN101692616A (zh) * | 2009-10-16 | 2010-04-07 | 西安电子科技大学 | 基于分组处理的伪随机序列的随机性检测方法 |
CN106776194A (zh) * | 2016-12-08 | 2017-05-31 | 上海东软载波微电子有限公司 | 寄存器位带的测试方法及系统 |
CN108415668A (zh) * | 2018-02-06 | 2018-08-17 | 珠海市杰理科技股份有限公司 | 芯片激励方法、装置、系统、计算机设备和存储介质 |
CN111611629A (zh) * | 2020-06-24 | 2020-09-01 | 中物院成都科学技术发展中心 | 一种芯片的物理指纹提取系统和方法 |
CN112884104A (zh) * | 2021-03-24 | 2021-06-01 | 南通大学 | 一种基于混沌加密的商品防伪二维码生成方法 |
CN113641693A (zh) * | 2021-08-20 | 2021-11-12 | 北京百度网讯科技有限公司 | 流式计算系统的数据处理方法及装置、电子设备和介质 |
CN115470106A (zh) * | 2022-08-17 | 2022-12-13 | 北京清微智能科技有限公司 | 一种可重构芯片的验证方法和系统 |
Non-Patent Citations (2)
Title |
---|
一种基于覆盖率的功能验证方法;席筱颖 等;《哈尔滨理工大学学报》(第01期);90-92 * |
基于Logistic映射的分组密码算法研究及其应用;权安静 等;《东南大学学报(自然科学版)》;11-14 * |
Also Published As
Publication number | Publication date |
---|---|
CN116301724A (zh) | 2023-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2430409C2 (ru) | Методология измерения покрытия в структурном состоянии взаимного соединения | |
Eckert et al. | DRNG: DRAM-based random number generation using its startup value behavior | |
CN113160876A (zh) | Dram测试方法、装置、计算机可读存储介质及电子设备 | |
CN116301724B (zh) | 一种不重复伪随机数的生成方法、装置、设备及存储介质 | |
CN116956801B (zh) | 芯片验证方法、装置、计算机设备和存储介质 | |
CN108776665B (zh) | 一种数据处理方法及装置 | |
CN109933473A (zh) | 芯片内存功耗测量方法、装置、设备及介质 | |
CN107948177A (zh) | 验证问卷的生成方法和装置 | |
CN115168241B (zh) | 一种基于组合功能覆盖率的测试方法和系统 | |
CN117114988A (zh) | 一种图像对抗样本生成方法及装置 | |
CN106469042B (zh) | 伪随机数的生成方法和装置 | |
CN108021563A (zh) | 一种指令间数据依赖的检测方法和装置 | |
CN114047905B (zh) | 一种伪随机序列产生方法、装置、介质及设备 | |
CN115119197B (zh) | 基于大数据的无线网络风险分析方法、装置、设备及介质 | |
CN113556228B (zh) | 可用作种子的伪随机数的生成与相应唯一编码的生成方法 | |
US8740703B2 (en) | Random data generation | |
CN111600672A (zh) | 生成扩频码的方法、装置、电子设备和非瞬时性计算机存储介质 | |
Wang et al. | Generating high-quality random numbers by cellular automata with PSO | |
Pomeranz | Sharing of compressed tests among logic blocks | |
CN118519614B (zh) | 随机数生成方法、装置、电子设备和存储介质 | |
Sun et al. | Testing Sequence Generation Method Based on Unrelated Behaviors Serializing | |
CN116360708B (zh) | 数据写入方法及装置、电子设备和存储介质 | |
CN112765564B (zh) | 一种试题防窃取方法、系统、终端及存储介质 | |
JPH04140828A (ja) | 乱数発生装置 | |
JP2006155168A (ja) | 乱数生成方法及びシステム |
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 |