python生成1到100之间随机数128bit整数范围的随机数⽣成器
注:本⽂“128bit整数范围”指“-2↑127~2↑127-1”。另外,由于编辑器的bug,在⾮代码部分⽤“↑”来表⽰乘⽅符号
最近我对随机数⾮常感兴趣,于是我就写了⼀个范围为**-2↑127~2↑127-1**随机数⽣成器的代码,下⾯给出我所写的随机数代码(Python3):
def randfor128bit(n):
m=n+4
n127=170141183460469231731687303715884105728#2^127
n128=340282366920938463463374607431768211456#2^128
value =[3,4,5]
for i in range(m-3):
value.append(((value[-3]**3+value[-2]**3-value[-1]**3)% n128)-n127)#[(a↑3+b↑3-c↑3) mod (2↑128)]-2↑
127
return value[(m-1)]#⽣成128bit整数范围的随机数
当然,这个⽣成器是可以被作为模块使⽤的,下⾯我们来进⾏⼀些测试**(注意:如果你没有把第1个代码保存到random128bit.py,会运⾏失败):**
前100项输出测试:
import random128bit as r128
for i in range(100):
print(r128.randfor128bit(i))
print("\n")
测试结果1:
170141183460469231731687303715884105694
-170141183460469231731687303715884066235
-61597115595336
-61923676896964458908961228608768460363
82983530796783886084632556793100935472
-103232277246334793809180636843679978483
-15749167937133712471093740513724526216
73190832050714783944905572936929803925
26533115958397180358301001344930440936
40493550203559293303808167438899197869
66370846253202860884780052297802317624
-102066266212488732840818898798154626443
-102066266212488732840818898798154626443 -57419084958562110407062541841744347608 1
67440671736959447357964611615848944205 54588949594164717936576331483400960760 28005840003239112387667211712302651733 75843064032710969905803537786296142184 -104185832826096467235336180276737219091 42021938716141384191619682121420215480 -29321786585284694499559637465671417035 -166622178498551281658027370383853441368 -52676001855089685288115130012495218035 -162105785323203843738723701560331092872 72497252604974562853198467213879795733 -129683185124742396939031879863189832216 -159480038420190423176375367922656880595 123691775907289998114188184956714672696 -122435509385060204871069945531981871115 44162003042875462657413832546723579688 116978427518795260149040567707037206221 -87757763342683255631638972880299624968 84678607902445125157723573873825551061 55505699816005445876683817863126669928
-162304766333367864709178500651119456659 100085672641698237011177661590705760184 48831704944185253954074247972995668149 -65210370715898760760317294051425941592 -70088550396434673680819321905478748403 -102356123826759584670529727160737912968 32096756113185515348938980779792396693 44492433269420566863138483049208782568 36425825608189694345114348311497115821 59010561555647316841685142271829386552 -132806199009687545620395504393724758667 64557028612169251684902940255554170920 1
4016859705620222151056901858063436621 150853727791310512126851067159588294904 -58876492438348084009841711288503288747 66439402741421492067962528947428477800 -163499425172079805887389097371129362707 -160203743935806950042553775857383761224 69293783597260167651014811875223707189 -169498697481796046372628406517392015192 -138825275288248885479824572314061405299 -161348301290425586878330791979525967240
-134997470295832271833004406534949850347 117926696572472754860224302237615513576 -48208763303403318414410888017445828307 34320130098134842765699045555080087608 -137684248848244516110554696690448542987 -102063888916042498774922664476460959448 94998061805749497895495321123709198285 8087305090348048278585656543527013368
-93135119600174837812557211405350922795 -48069315903748312617944293957261927320 -98984133002730544722698640648265576595 -89296872452615827828640530068885230152 32407099260945337520563424226888668085 23735451129228431993384767654634002856 -1125838751512704602599005494156304371 132060836783594442768113586754738167160 -27841253123003113079516101313582783339 -45643048450300915869435436144408346392 -118409048710101579752044332479708325459 -8784750903138961656467119253058958536 -148963012602139321271833977669289451403 108587639344622134294417633974063604264
32938685458409824840556219692625069133 125433889973030332774112945965672965880 -17913333861379019350521207321567322283 161411664615691840017271937042358209896 -105244290599632422185004869606009346067 -97967160278226201697987054301567115080 -33519903137984535995933033246967056075 -90041326839156005374824457234415889752 10965289058800265532631117232179563661 56505970787408265262601267331884296312 8603153555430830200981711792480994837 147236609725651158902085886503396393448 -161484146574241613139184468408738710995 -93060580055444702407256723798810874312 30183208802520855440512602188274343413 -148318786193354607708276136985652188376 100931837797841080766913000155209693389 109601046391459895548526841916288442872 23492756551893083657815205402121132245 138661429669235400079974293896671845992 113218618556216034631208404980918489197
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论