首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言隨機數固定不變?加入 srand() 種子解決

     編輯:程式設計綜合問答

問題原因

rand() 預設使用固定種子,每次程式執行產生的隨機序列完全相同,導致「隨機數總是那幾個」。

解決方法:呼叫 srand() 設定種子

在呼叫 rand() 前,加入 srand((unsigned)time(NULL)),以當前時間作為種子,每次執行結果即不同。

修正後完整程式碼

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    int a[20], i;
    int range, count;

    printf("請輸入隨機數範圍: ");
    scanf("%d", &range);
    printf("請輸入隨機數個數: ");
    scanf("%d", &count);

    // 關鍵:設定隨機種子,僅需呼叫一次
    srand((unsigned)time(NULL));

    for (i = 0; i < count; i++) {
        a[i] = 1 + rand() % range;  // 產生 1~range 的隨機整數
        printf("%d ", a[i]);
    }
    printf("\n");
    return 0;
}

重點提醒

  • srand() 只需在程式啟動時呼叫 一次,切勿放在迴圈內重複呼叫,否則若時間未更新會產生相同序列。
  • 引入 <time.h> 以使用 time(NULL)。
  • 若需更高品質隨機數(如加密用途),請改用 rand_s (Windows) 或 /dev/urandom (Linux) 等安全隨機源。

加上這一行,你的隨機數就會真正「隨機」起來!

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