計算機產生的隨機數並不是真正隨機的,所以叫 偽隨機數。
當“種子”固定時,它產生的隨機數序列是不變的,例如產生10個數,這10個數大小是變化的,但只要用這個種子,每次產生的這10個數序列,是一模一樣的。
用 srand(time(0)); 設種子,就會因時間變化,得到不同的種子,那麼隨機數序列就會變化。
time(0) 是當前時間,(精度可能是毫秒)。只要兩次跑程式啟動時間差別 超過1毫秒,兩個序列就不同了(隨機)。如果,時間差別不到1毫秒,兩個序列就沒變化。
--------
錯誤的程式:
for (i=0;i
srand(time(0)); // 5次的種子若不變
printf("%d ",rand()); // 依次取 5個序列的 第一個數
}
5個數不變化。
-------------------
正確的程式:
srand(time(0)); // 設1次種子
printf("%d ",rand()); //依次取1個序列的第1到第5個隨機數
5個數變化
計算機產生的隨機數並不是真正隨機的,所以叫 偽隨機數。
當“種子”固定時,它產生的隨機數序列是不變的,例如產生10個數,這10個數大小是變化的,但只要用這個種子,每次產生的這10個數序列,是一模一樣的。
用 srand(time(0)); 設種子,就會因時間變化,得到不同的種子,那麼隨機數序列就會變化。
time(0) 是當前時間,(精度可能是毫秒)。只要兩次跑程式啟動時間差別 超過1毫秒,兩個序列就不同了(隨機)。如果,時間差別不到1毫秒,兩個序列就沒變化。
--------
錯誤的程式:
for (i=0;i
srand(time(0)); // 5次的種子若不變
printf("%d ",rand()); // 依次取 5個序列的 第一個數
}
5個數不變化。
-------------------
正確的程式:
srand(time(0)); // 設1次種子
for (i=0;i
printf("%d ",rand()); //依次取1個序列的第1到第5個隨機數
}
5個數變化