C言語のrand()関数と関連するタイムライブラリ

ランド()関数

(ボイド)のrand()関数のプロトタイプintランドは、それが0からRAND_MAX(RAND_MAX C言語の標準ライブラリが<STDLIB.H> 32767すなわち0x7FFFをマクロで定義されている)の整数を返します

しかし、唯一のランドとの()関数rand()関数から計算固定式(シードと呼ばれる)の数に基づいているが、コンピュータがオンになっているので、シード値が与えられ、その結果が一定で返しますアップ、結果は変わっていないので、

)(Cのsrand関数を提供することは、そのプロトタイプvoid srand関数を持っていた(INT A)関数は初期値のランド()関数を初期化することです

しかし、種子のために、我々は手動で、その後、たびに乱数を生成することはできません一度に入力してください

だから我々は、シードとしてコンピュータを時間を計るために持って、その後、種子が変わっ所有します(時間()関数の説明は下記を参照します)

#include <ビット/ STDC ++ H.>
 使用して 名前空間STD;
 int型のmain()
{ 
    srand関数(時間(NULL)); // 時間(NULL)はシステム時間である 
    COUT << RAND()<< ENDL;
     戻り 0 ; 
}

 

それはそれの一定の範囲内で乱数を生成する方法、達成するために、「%」および「+」を使用して考えるのは簡単です

0 <=ランド()%以来(NM + 1)<= NM

そうM <=ランド()、N%(N-M + 1)+、M <=

#include <ビット/ STDC ++ H.>
 使用して 名前空間STD;
 int型のmain()
{ 
    int型N-、M; 
    CIN >> M >> N - ; 
    srand関数(時間(NULL)); 
    COUT << RAND()%(N - M + 1)+ M << ENDL;   //は[N-、M]の間のランダムな整数生成
    戻り 0 ; 
}

TIME.Hライブラリー関連

TIME.Hヘッダ・ファイルは、4つの変数の種類と、2つのマクロ日時の各種操作機能を定義します。

4つの変数

size_tの それはのsizeofキーワードの結果であり、符号なし整数型であります
clock_t これは、プロセッサ時間のためのメモリの一種で、unsigned long型
time_tの これは、暦時間を格納するのに適したタイプであります
構造体tm これは、建設の時刻と日付を保存する場所です

 

 

 

 

 

次のようにtm構造体が定義されています。

構造体tm
{
  int型のtm_sec; / *秒 - [0,59] * /
  int型tm_min; / *分 - [0,59] * /
  int型tm_hour; / *時間 - [0,23] * /
  int型tm_mday;月の/ *日 - [1,31] * /
  int型tm_mon; / *ヶ月1月以来 - [0,11] * /
  int型のtm_year; / * 1900年以来、* /
  int型tm_wdayコンポーネント; / *日日曜日以来 - [0,6] * /
  int型tm_yday; / *日1月1日以来 - [0365] * /
  int型tm_isdstが; / *夏時間のフラグ* /
}。

 

マクロ二つ

ヌル このマクロは、ヌルポインタ値に一定であります
CLOCKS_PER_SEC

なお、第2のCPUが実行中のクロックサイクルの数を表します

結果クロックは()関数は、秒単位で金額を変換するために使用されます

しかし、この量の特定の値は、一般的に、1000年のオペレーティング・システムに関連しています

 

 

 

 

 

 

ライブラリ関数の一部

difftime()は: のように2秒を計算するために  、ターゲットのtime_tカレンダー時間(時間_終了- time_beg)との差と、  time_end に代表前  time_beg の時点、結果は陰性です。関数のプロトタイプ:ダブルdifftime(time_tのTIME2、time_tの時間1)

mktime(): 関数のプロトタイプ:time_t型はmktime(構造体tmの*のtimeptr )、 構造は、ローカルタイムゾーン値のtime_tに基づいてtimeptrを変換する指摘しました

時間は、() 内にエンコードされた返し  のtime_tオブジェクトの現在のカレンダー時間、及びストレージ  arg 点  以外のtime_tオブジェクト(  arg ヌルポインタのためには、現在の暦時間を得るとき午前0時00分00秒から1970-01-01にタイマー= NULL(今秒数)、暦時間を設定するタイマ=値、時間は、unsigned long型のtime_t関数プロトタイプ:.のtime_t時間(のtime_t *タイマです )

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
INT メイン()
{ 
    のtime_t秒。 = 時間(NULL); 
    printf(" 1970-01-01 =の%ld \ nの以来の時間"、秒/ 3600 );
    リターン 0 ; 
}

 

クロック(): 通常はプログラムの開始時に)時計機能を実行することから戻り、使用されるプロセッサのクロック時間、典型的には、プログラムまたは関数プロトタイプの実行時間の特定の期間を計算するために使用される:clock_tクロック(ボイド) 

#include <ビット/ STDC ++ H.>
 使用して 名前空間STD;
 int型のmain()
{ 
    clock_t START_TIMEの、finish_timeに、
    START_TIME = クロック(); 

    // テストプログラムは、この時間を実行することができる実行

    finish_timeに = クロック();
     ダブル TOTAL_TIME = (ダブル)(finish_timeに- START_TIME)/ CLOCKS_PER_SEC;   // あなたが削除CLOCKS_PER_SECに与えたい場合はミリ秒に時間を秒単位で変換 
    のprintf(「タイムランニングのプログラムです:F%\ N- 、TOTAL_TIME);
     を返す 0を; 
}

 

いるasctime()は:時間変数は文字列表現アウト関数プロトタイプで表されるtm構造体のように定義される:* CHARいるasctime(構造体のTM * PTR)

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
INT メイン()
{ 
    構造体のTM T。
    t.tm_sec = 10 
    t.tm_min = 50 
    t.tm_hour = 16 
    t.tm_mday = 6 
    t.tm_mon = 7 
    t.tm_year = 119 
    t.tm_wday = 2 

    printf(" %sにする\ n "、いるasctime(&T))。// 星期二2019年8月6日16時50分10秒
    復帰0 )。
}

 

LOCALTIME() 関数のプロトタイプ構造体  TM  * LOCALTIME (  CONST  のtime_t  * 時間 )、変換(エポックの開始から所定の時間には、  time 対象とする  構造体tmカレンダ時刻とローカル時刻表現を形成するための値のtime_t)を

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
INT メイン()
{ 
    time_tのタイマー。
    構造体 TM * 今、
    時間(&タイマー)。            // 获取当前时间 
    今= localtimeの(&タイマー)。// 填充のstruct tmの结构 
    のprintf(" 現在のローカル時刻と日付:%sの" 、今いるasctime());
    リターン0 )。
}

 

 CTIME(): 通話用として、テキスト表示に、その後の時代の開始からカレンダー時間のコストに指定された時間を変換し、  関数は、asctime localtimeの時間)、関数のプロトタイプます。char * ctimeの(のconst time_t型*タイマー)

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
INT メイン()
{ 

    のtime_t CURTIME。
    時間(CURTIME)。
    printf(" 現在の時刻=%のS "、CTIME(&CURTIME))。
    リターン0 )。
}

 

おすすめ

転載: www.cnblogs.com/Zeronera/p/11311000.html