亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C的rand()使用哪些常用算法?

C的rand()使用哪些常用算法?

開心每一天1111 2019-09-26 10:36:33
我了解C規范并未提供有關的具體實現的任何規范rand()。在不同的主要平臺上通常使用哪些不同的算法?它們有何不同?
查看完整描述

3 回答

?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

我曾經寫過一份關于離散數學的CRNG的報告。為此,我在msvcrt.dll中反匯編了rand():

msvcrt.dll:77C271D8 mov     ecx, [eax+14h]msvcrt.dll:77C271DB imul    ecx, 343FDhmsvcrt.dll:77C271E1 add     ecx, 269EC3hmsvcrt.dll:77C271E7 mov     [eax+14h], ecx
msvcrt.dll:77C271EA mov     eax, ecx
msvcrt.dll:77C271EC shr     eax, 10hmsvcrt.dll:77C271EF and     eax, 7FFFh

所以這是一個LCG,類似(未經測試)...

int ms_rand(int& seed){
  seed = seed*0x343fd+0x269EC3;  // a=214013, b=2531011
  return (seed >> 0x10) & 0x7FFF;}


查看完整回答
反對 回復 2019-09-26
  • 3 回答
  • 0 關注
  • 877 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號