有个用JAVA加密的字符串,我用C++将那个JAVA加密类翻译成C++的类来解,可是每次都解不开,后来我发现问题处在随机数那部分
JAVA代码如下:
random = new Random(5);
for (int i = 0; i < keystring.length(); i++)
random.setSeed( (long) (random.nextDouble() * 1000 *
(int) keystring.charAt(i)));C++我是这么写的
srand(5);
for (int i = 0; i < keystring.GetLength(); i++)
{
srand( (long) ((rand())/(double) RAND_MAX * 1000 *
(int) keystring.GetAt(i)));
}以上是随机数的初始化部分,在使用时
java的
double x = random.nextDouble();
和我C++的double x = (rand())/(double) RAND_MAX;
出来的结果差别特大,我不知道是我程序问题还是这两种语言对此就是不能一样??
JAVA代码如下:
random = new Random(5);
for (int i = 0; i < keystring.length(); i++)
random.setSeed( (long) (random.nextDouble() * 1000 *
(int) keystring.charAt(i)));C++我是这么写的
srand(5);
for (int i = 0; i < keystring.GetLength(); i++)
{
srand( (long) ((rand())/(double) RAND_MAX * 1000 *
(int) keystring.GetAt(i)));
}以上是随机数的初始化部分,在使用时
java的
double x = random.nextDouble();
和我C++的double x = (rand())/(double) RAND_MAX;
出来的结果差别特大,我不知道是我程序问题还是这两种语言对此就是不能一样??
C++ 中 rand() 返回 int 类型 0 到 RAND_MAX。搂主的理解好像是对的。仔细一看,好像是小括号括得有误。
C++: double x = (rand() % 1000) * (int) keystring.charAt(i)