【发布时间】:2013-02-03 12:15:30
【问题描述】:
有人知道 Borland C++ rand() 函数的具体实现吗?
我尝试了以下操作,但结果与我使用真正的 TurboC 4.5 得到的结果不同。当然,我尝试了不同变体的代码,但没有成功。
unsigned int seed = 1;
void srand(unsigned int newSeed) {
seed = newSeed;
}
#define MAX_RAND 0x7FFF;
unsigned int lrand()
{
int a = 22695477;
int c = 1;
seed = (a * seed + c);
return seed;
}
unsigned int rand() {
return (lrand() >> 16) & MAX_RAND;
}
【问题讨论】:
-
简单拆解怎么样?
-
你为什么想知道?有许多不同的方法可以产生伪随机数。大多数是具有不同类型常量的乘法和累加序列。
-
我最后的希望可能是使用反汇编程序。使用这个特定实现的原因很简单:只是为了让我的(非常!)旧代码与不同的编译器兼容。
标签: c random borland-c++