首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言隨機數與延遲函數:srand、rand、time 實戰技巧

     編輯:關於C語言

關鍵結論

當隨機數與延遲函數放入迴圈時,亂數種子 srand() 必須在迴圈外只呼叫一次,否則若迴圈執行速度極快,time(NULL) 傳回相同秒數,導致產生相同隨機序列。參數定義位置(全域/區域/靜態)影響函數行為與資料共享範圍。

格式化輸入輸出提醒

  • scanf 讀取 double 用 %lf
  • printf 輸出 double 用 %f(%lf 亦可)

多版本延遲函數演示

程式碼展示四種 delay() 多載形式:

  1. 無參數:固定延遲 5000 秒(示範邏輯錯誤,實際應為毫秒級)
  2. delay(time_t end):使用外部傳入的 end 作為基準
  3. delay(time_t end, double time_delay):可指定延遲秒數
  4. delay(time_t start, time_t end):使用全域變數 t_delay

核心邏輯皆為:記錄起始時間,迴圈呼叫 time(&end) 直到 difftime(end, start) >= 目標延遲。注意 difftime 傳回 double 秒差。

主程式流程

srand(time(NULL));  // 僅初始化一次
for (i=0; i<10; i++) {
    flag = createOrNot();
    printf("%d\n", flag);
    delay();  // 不同版本延遲
}

示範正確的亂數初始化位置與多種延遲呼叫方式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved