c語言中自帶的函式rand()和srand(),包含在標頭檔案當中。
返回乙個範圍在0-rand_max之間的隨機數。
注意:該函式生成的隨機數是一次性的,第二次執行時結果仍然一樣。
這是因為rand()函式是根據「種子」來產生隨機數的,在呼叫時,「種子」預設為1,所以產生的數相同。
srand()函式用來設定rand()產生隨機數所需要的「種子」,通過srand()函式設定「種子」,可以使rand()產生的「隨機數」真正達到隨機。
一般配合time()函式(在標頭檔案中)來動態生成「種子」。time(0)返回當前系統時間,time(null)返回當前日曆時間,都是從2023年1月1日0時0分0秒到此時的秒數。目前測試來看(更改了計算機顯示時間),兩者返回的值相等。
得到一般生成隨機數的用法:
srand(time(null));
printf("%d\n",rand());
一般計算時間可能會使用clock()函式(包含在中),它得到的是處理器時鐘所使用的時間,因此在並行程式當中,它將得到所有程序(執行緒)計算所花費的時間之和,與我們想要得到的相差甚遠。
返回當前精確時間(從2023年1月1日0時0分0秒到此時的時間),包含在中:
#include
int gettimeofday(struct timeval *tv, struct timezone *tz);
其引數tv是儲存獲取時間結果的結構體,引數tz用於儲存時區結果:
struct timezone
timezone引數若不使用則傳入null即可,一般用null。
而結構體timeval的定義為:
struct timeval
一般過程為:
struct timeval start_t, end_t; //宣告結構體變數
gettimeofday(&start_t, null); //記錄開始的時間
gettimeofday(&end_t, null); //記錄結束的時間
double total_t_sec, total_t_usec, total_t; //變數宣告
total_t_sec = (double)(end_t.tv_sec - start_t.tv_sec); //計算秒數
total_t_usec = (double)(end_t.tv_usec - start_t.tv_usec); //計算微秒數
total_t = total_t_sec + total_t_usec / 1000000.0; //計算總時間
#include int main(int argc, char *ar**)
agrc為引數個數,ar**是字串陣列,下標從0開始,第乙個ar**[0]存放的是可執行程式的檔案名字,然後一次存放傳入的引數,例如上面的**(hello.c):
1.首先通過gcc編譯:gcc -o hello.out hello.c得到可執行檔案hello.out。
2.在執行時通過傳入引數:./hello.out hello,world其中空格後面接引數,多個引數通過空格分開。
最後得到結果
首先,假設有兩個原始檔和乙個標頭檔案,分別命名為main.c fun.c fun.h,表示主函式main()所在檔案,函式所在檔案,函式宣告所在檔案。
#ifndef #endif的作用是防止某乙個原始檔中兩次包含同乙個標頭檔案
#define 定義該標頭檔案的標識
#ifndef fun_h
#define fun_h
int fun(int a);
#endif
該包含函式的原始檔中必須加入#include"fun.h"
#include#include"fun.h"
int fun(int a)
在標頭檔案中加入#include"fun.h"
用gcc編譯時,需要鏈結到呼叫函式對應的.c檔案,如:gcc main.c fun.c -o main.out
#include#include"fun.h"
int main()
該函式包含在標頭檔案 stdlib.h 中,作用為把引數str所指向的字串根據給定的base轉換為乙個長整數。
long strtol(
const char *str, //輸入字串,需要轉換為長整數的字串
char **endptr, //str中數值後的下乙個字元,一般為(null)
int basr //基數,介於2-36之間,或者為0,表示輸出的數的進製,如:base=10就為十進位制
)
學習nodejs的一點筆記
1 global可以宣告全域性變數 跨模組 例如 global a 100 console.log global.a 輸出100 2 module物件 當前模組的filename 子模組等資訊 3 module.expors.obj 將obj物件宣告為全域性物件 4 filename 當前模組的路徑...
php一點筆記
1.replace函式作用 替換字串中匹配到的預先定義的正規表示式的內容 3.建立與資料庫的連線 db mysql connect localhost root or die could not connect mysql error mysql select db register or die ...
Redis的一點筆記
優勢之三原子 什麼是原子性,什麼是原子性操作?舉個例子 a想要從自己的帳戶中轉1000塊錢到b的帳戶裡。那個從a開始轉帳,到轉帳結束的這乙個過程,稱之為乙個事務。在這個事務裡,要做如下操作 如果在a的帳戶已經減去了1000塊錢的時候,忽然發生了意外,比如停電什麼的,導致轉帳事務意外終止了,而此時b的...