是怎样的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