是怎樣的C庫中定義rand函數。 rand函數的時間複雜度是多少?如果有人可以提供rand函數的源代碼(我不需要它的實現,但是源代碼),那會很好。 Thanx
Q
蘭德功能在C
-1
A
回答
0
它是實現定義的,每個庫作者可以自由實現它,因爲他們認爲合適。但是,它們通常基於linear congruential generators,這是有限的。 POSIX標準給出了一個example implementation:
static unsigned long next = 1;
/* RAND_MAX assumed to be 32767 */
int myrand(void) {
next = next * 1103515245 + 12345;
return((unsigned)(next/65536) % 32768);
}
void mysrand(unsigned seed) {
next = seed;
}
我不知道你所說的「時間複雜度」在這裏的意思; 「時間複雜度」通常指的是運行時間相對於n
(其中n
是輸入的大小或某物)的變化。
+0
我的意思是時間複雜度取決於我們想要隨機數的範圍(即上限和下限)。 – Prateek 2011-12-28 16:55:28
+0
@PRATEEKSULTANIA:'rand()'不允許你指定邊界。 – 2011-12-28 16:56:09
1
這是O(1)複雜性,沒有輸入,它返回一個int
。
從http://www.jbox.dk/sanos/source/lib/stdlib.c.html:
int rand()
{
return (((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff);
}
相關問題
- 1. 打開SSL蘭德功能
- 2. C++蘭德
- 3. 蘭德()爲變量的C++
- 4. 修改蘭德()範圍C++
- 5. 與蘭德
- 6. C#卡蘭德風格預訂
- 7. VirtualUriMapping doesn't功能 - 玉蘭CMS
- 8. php會話和蘭德
- 9. PHP - 陣列的蘭德值
- 10. MYSQL使用不當蘭德
- 11. wordpress orderby =蘭德不工作
- 12. mysql蘭德()不工作
- 13. 蘭德的MonadParallel實例
- 14. PHP蘭德複製在MySQL插入
- 15. Haskell - 在蘭德monad中計時計算
- 16. 木蘭CMS有這些功能嗎?
- 17. 德爾福功能通用
- 18. C++多程序問題(蘭德,轉換,崩潰)
- 19. 功能在C
- 20. C++在功能
- 21. 功能在C
- 22. 功能在C++
- 23. 功能在C
- 24. Android:公曆卡蘭德問題
- 25. Lucida格蘭德字體不夠輕薄
- 26. 蘭德()沒有正確的隨機化
- 27. 試圖蘭德()沒有重複
- 28. Tapku卡蘭德集成錯誤
- 29. 由蘭德命令,不返回數據
- 30. 佛蘭德的語言代碼
你甚至試圖找到自己的答案嗎?當我谷歌「C蘭特」的第一個命中是[這個問題](http://stackoverflow.com/questions/1026327/what-common-algorithms-are-used-for-cs-rand)。 – eaj 2011-12-28 16:54:06
無論您的C編譯器包含哪個運行庫,都應該有源代碼。你檢查過它嗎?即使像Oli這樣聰明的人可以給你一些通用的指導方針或有教育意義的猜測,這依賴於實施。 – 2011-12-28 16:58:30