999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C和C++語言產生隨機數的過程分析

2016-03-07 12:56:07周建儒
電腦知識與技術 2015年34期
關鍵詞:語言

摘要: random()函數和rand()函數都可以產生隨機數,但是,兩者的實現過程是不一樣的,在使用這兩個函數時總是會遇到一些疑問。該文結合實例分析了rand()函數產生隨機數的過程,對不同隨機函數的使用有一定的指導意義。

關鍵詞:C++語言; 隨機函數;隨機數

中圖分類號:TP312 文獻標識碼:A 文章編號:1009-3044(2015)34-0104-02

Abstract: random () function and rand () function can generate random numbers, but both the implementation process is not the same when using these two functions will always encounter some doubts. Examples of this paper analyzes the rand () function generates a random number process, the use of different random function has a certain significance.

Key words: C ++ language; random function; random numbers

在C語言中的隨機數函數是randomize()和random(),前者是產生隨機數的種子,而后者是根據前者生成的種子來產生隨機數。random()函數產生的隨機數是一種偽隨機數。在C++語言的開發工具中(例如DEV C++)已經無法使用randomize()函數參數隨機數了,取而代之的是rand()函數[1-3],接下來就分析一下rand()函數產生隨機數的實現原理。

1 產生隨機數的實例

C++語言編寫的產生隨機數的程序,如下代碼所示。

#include "stdlib.h"

#include

using namespace std;

int main()

{for(int i=1;i<=10;i++)

cout<

return 0; }

程序運行后輸出10個整數,分別是:

41 18467 6334 26500 19169 15724 11478 29358 26962 24464

為了更加清晰的了解rand( )函數,可以通過工具逆向分析一下這個程序,逆向生成的主要代碼如下。

CALL DWORD PTRDS:[<&MSVCR90D.rand>] ;調用rand函數

MOV DWORD PTR SS:[EBP-8],EAX ;rand的返回值賦值保存給[EBP-8]

MOV EAX,DWORD PTR SS:[EBP-8]

PUSH EAX

PUSH OFFSET Randomiz.??_C@_0BF@NKDDNMAK@>; ASCII " Random number = %d"

CALL DWORD PTR DS:[<&MSVCR90D.printf>]

首先程序先調用rand函數,然后把返回值賦值給寄存器EAX,再把EAX返回的隨機數賦值給地址[EBP-8]保存,最后把EAX的值當做參數壓棧后在調用printf()函數[4]。這就是輸出模塊的底層實現了,由于我們探尋的是rand()的函數的實現原理,所以,接下來探討一下rand函數的內部實現。

2 rand函數的內部實現

rand函數的內部代碼如下:

54E33085 PUSH ECX

54E33086 CALL MSVCR90D._getptd ;調用_getptd函數

54E3308B MOV DWORD PTR SS:[EBP-4],EAX

54E3308E MOV EAX,DWORD PTR SS:[EBP-4]

54E33091 MOV ECX,DWORD PTR DS:[EAX+14]

54E33094 IMUL ECX,ECX,343FD ;帶符號數乘法指令

54E3309A ADD ECX,269EC3 ;加法

54E330A0 MOV EDX,DWORD PTR SS:[EBP-4]

54E330A3 MOV DWORD PTR DS:[EDX+14],ECX

54E330A6 MOV EAX,DWORD PTR SS:[EBP-4]

54E330A9 MOV EAX,DWORD PTR DS:[EAX+14]

54E330AC SHR EAX,10 ;邏輯右移

54E330AF AND EAX,7FFF ;和

54E330B4 MOV ESP,EBP

54E330B6 POP EBP

54E330B7 RETN

在rand( )函數的內部調用了一個未公開的函數_getptd(),無法得知_getptd( )函數的內部細節,不知道這個函數做了什么。但是,可以分析整個函數的代碼,并結合rand函數的外部代碼,可以看出_getptd( )函數的返回值并沒有被使用。……

登錄APP查看全文

猜你喜歡
語言
詩之新,以語言創造為基
中華詩詞(2023年8期)2023-02-06 08:51:28
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
讓語言描寫搖曳多姿
多向度交往對語言磨蝕的補正之道
日常語言與播音語言
新聞傳播(2016年10期)2016-09-26 12:15:04
語言技能退化與語言瀕危
我有我語言
論語言的“得體”
語文知識(2014年10期)2014-02-28 22:00:56
Only Words慎用你的語言
大自然的語言
主站蜘蛛池模板: 亚洲欧洲自拍拍偷午夜色| 亚洲人成网站18禁动漫无码| 四虎永久在线| 国产精女同一区二区三区久| 波多野结衣中文字幕一区二区| 精品国产污污免费网站| 国产成人无码Av在线播放无广告| 成人一区在线| 手机精品视频在线观看免费| 极品尤物av美乳在线观看| 一本久道热中字伊人| 在线观看免费黄色网址| 亚洲国产成人麻豆精品| 亚洲成人高清无码| 无码区日韩专区免费系列| 亚洲天堂久久久| 日韩无码黄色| 色妞www精品视频一级下载| 久久久久88色偷偷| 亚洲91精品视频| 爆乳熟妇一区二区三区| 亚洲美女高潮久久久久久久| 国产精品观看视频免费完整版| 亚洲欧美在线综合一区二区三区| 欧美在线视频不卡第一页| 亚洲综合18p| 亚洲精品视频在线观看视频| 国产资源免费观看| 久久情精品国产品免费| 狠狠色丁香婷婷综合| 国产精品精品视频| 亚洲无码高清一区二区| 18禁不卡免费网站| 午夜视频免费试看| 亚洲日韩精品欧美中文字幕| 人人澡人人爽欧美一区| 午夜精品福利影院| 亚洲免费福利视频| 99久久精品国产综合婷婷| 欲色天天综合网| 国产免费怡红院视频| 一本大道东京热无码av| 国产成人精品视频一区二区电影| 日本高清免费不卡视频| 午夜在线不卡| 日韩欧美中文字幕在线精品| 久久久久亚洲精品无码网站| 亚洲国产精品VA在线看黑人| 日韩高清成人| 人妻精品全国免费视频| 青青久久91| 亚洲美女久久| 欧美在线黄| 国产精品吹潮在线观看中文| 伊人中文网| 情侣午夜国产在线一区无码| 素人激情视频福利| 波多野结衣在线一区二区| 欧美笫一页| 精品久久综合1区2区3区激情| 九九精品在线观看| 黄色网站不卡无码| 91免费国产高清观看| 国产一级毛片高清完整视频版| 日韩精品亚洲人旧成在线| 国产偷倩视频| 99久久精品免费观看国产| 欧美精品1区| 免费va国产在线观看| 日韩大片免费观看视频播放| 免费jizz在线播放| 草逼视频国产| 国产精品不卡片视频免费观看| 亚洲天堂区| 免费Aⅴ片在线观看蜜芽Tⅴ| 欧美乱妇高清无乱码免费| 中文字幕在线看| 久热精品免费| 欲色天天综合网| 国产高清无码麻豆精品| 无码内射中文字幕岛国片| 亚洲中文字幕日产无码2021|