-
A:rand() 生成的數字是隨機的,但就個位數而言,是否隨機取決於你的取值範圍,比如取值範圍是 0-18,它們之間出現每個數字的概率是一樣的,但就個位數而言,9 的概率明顯小於其他數字。
B:了解了上述問題後,它提出的解決方案是將取值範圍劃分為10段,每段對應0到9之間的乙個數字,如0-18,可以分成對應的數字0,對應的數字1,......
rand() 返回 0-rand max(rand max > = 32767),這對於精度要求不高的程式來說概率差不大,可以這樣寫。
-
rand()%10 返回 0 9 表示總共 10 個段,這就是書中所說的 srand() 生成 10 個段。
另外,這句話是對演算法的改進,因為你也知道 rand()%10 生成乙個個位數,也就是書中提到的低十進位數,隨機性不好,所以應該改成 rand()% (rand max 10)。
-
總結。 以下是使用 rand() 和 srand() 函式生成三個 [16, 64] 整數以確定是否存在兩個相等的數字**(C++ 語言)的示例: cppcopy 程式碼 include include using namespace std; int main() else return 0;在上面的**中,我們首先使用 srand(time(null)) 函式來設定隨機數種子,使得每次執行程式時生成的隨機數都不同。
然後,使用 rand() 函式在三個 [16, 64] 之間生成隨機整數,以確定是否存在兩個相等的數字,最後輸出結果。
使用隨機函式寬笨 rand( ) 和 srand( ) 生成三個 [16,64] 遮蔽整數,仔細伴隨這三個數字的輸出,確定這三個整數中是否存在兩個相等的數字,有輸出“是”,沒有輸出“否”。
以下是使用 rand() 和 srand() 函式生成三個 [16, 64] 整數以確定是否存在兩個相等的數字**(C++ 語言)的示例: cppcopy 程式碼 include include using namespace std; int main() else return 0;在上面的**中,我們首先使用 srand(time(null)) 函式來設定隨機數種子,使得每次執行程式時生成的隨機數都不同。 然後,使用 rand() 函式在三個 [16, 64] 之間生成隨機整數,以確定是否存在兩個相等的數字,最後輸出結果為早期。
親愛的,我看不出你發來的東西,如果你有任何問題,請用文字詳細描述,好嗎? 謝謝!
-
讓我們看一下下面對 rand() 和 srand() 的解釋。
1.在標準 C 庫中,函式 rand() 可以在 0 rand max 之間生成乙個隨機數,其中 rand max 是 中定義的整數,與系統相關。
該函式沒有輸入引數,由表示式 rand() 直接引用; 例如,您可以使用以下語句列印兩個隨機數:
printf("random numbers are: %i %i",rand(),rand())
因為 rand() 函式是按照指定的順序生成整數的,所以每次執行上述語句時都會列印相同的兩個值,所以 C 語言的隨機性並不是真正的隨機性,有時被稱為偽隨機性。
3.為了讓程式在每次執行時為新序列生成乙個隨機值,我們通常通過向隨機數生成器提供新的隨機種子來做到這一點。 函式 srand() (可以從中播種用於隨機數生成器的種子。
只要種子不同,rand() 函式就會產生不同的隨機數序列。 srand() 稱為隨機數生成器的初始值設定項。
所以在你的第乙個例子中,種子不起作用。
第二個例子是一般使用隨機數生成。
方法一:使用srand函式; srand 函式可以以兩種不同的方式使用:直接輸入隨機數種子並使用系統時間初始化隨機數種子; >>>More