将带有指针的c++代码转换为等效的Java代码
Converting C++ code with pointers into a Java equivalent
所以我试图将这段代码转换为在我的Java程序中使用。然而,它有一个指针,我不确定把它翻译成Java的最好方法是什么。
/**
* 32-bit Multiplicative Congruential Pseudo Random Number Generator
* Microsoft Visual C++ Version
*/
#include <math.h>
/**
* The seed used by randomNumberGenerator.
*/
long gv_lRandomNumberSeed;
/**
* Returns a random number between 0.0 and 1.0.
* plSeed - Pointer to the seed value to use.
*/
double randomNumberGenerator( long* plSeed ) {
double dZ;
double dQuot;
long lQuot;
dZ = ( *plSeed ) * 16807;
dQuot = dZ / 2147483647;
lQuot = ( long ) floor( dQuot );
dZ -= lQuot * 2147483647;
( *plSeed ) = ( long ) floor( dZ );
return ( dZ / 2147483647 );
}
我需要能够使用这个函数中返回的上述数字:
/**
* Returns a random variate from an exponential probability
* distribution with the given mean value of dMean.
*/
double exponentialRVG( double dMean ) {
return ( -dMean * log( randomNumberGenerator( &gv_lRandomNumberSeed
) ) );
}
并且能够为dMean输入一个值并获得一个值作为返回…
帮忙吗?
(我知道很多人对这个网站上发布的糟糕问题感到愤怒,如果是这种情况,请尽量避免消极并帮助我更好地提出问题)该指针用于设置plSeed
为inout变量
由于您已经将randomNumberGenerator
放入某个类中,您应该将函数参数plSeed
提升到该类的一个字段。
指针被用来更新实参的值。我建议重新组织代码以避免使用这样的参数(并直接访问类变量gv_lRandomNumberSeed
)。其余代码相当直接地转换为Java(如果您熟悉Java的Random
类)。
哦,移植时请去掉匈牙利符号
选项包括:
- 将种子作为一个字段放置在与randomNumberGenerator()方法相同的类中。
- 将可变对象中的种子传递给randomNumberGenerator()。
- 返回一个同时包含新值和新种子的对象中的种子。
使用JNI(Java本机接口)技术。使用JNI,您可以从java调用C函数。
该指针基本上就是C语言中的引用形参。您可以通过多种方式在Java中实现相同的功能。请看下面问题的答案:
我可以在Java中通过引用传递参数吗?
相关文章:
- 在java中解决这段代码时面临循环中的问题
- 尝试用java代码编译和运行c++代码
- 我需要帮助将我的代码从 c++ 转换为 java
- 尝试在 QT 项目中调用 Java 代码时未找到类异常
- 使用 jni 将返回带有模板的对象的 Java 代码转换为 c++
- 具有相同数据类型代码的相同逻辑代码在 Java 中传递,但不在 C++ 中传递?
- 在没有引用传递资源的情况下,如何在java中简化这些代码
- 下面的C++代码将如何作为java类文件(名为Monstor)编写
- Java 本机访问代码错误:"Invalid memory access"
- Android 无法从本机代码调用 Java 方法 JNI
- 将自定义 Java 数据模型传递给我的本机代码
- SWIG:如何处理生成的 Java 代码中的指针
- 将本机C 代码转换为Java
- 将String从JNI(C )代码返回到Java
- 使用 CMake 和 Maven 构建C++和 Java 代码,并捆绑在一个罐子里
- 如何修复将传输到 java 的 2d 数组代码使用 JNI
- 与Java相比,为什么此C 代码执行速度如此慢
- 无法将Android WebView渲染到C 和Java代码之间共享的外部纹理中
- 从本机代码返回"const char*"并在java中获取"字符串"
- JNI 代码返回字符串,但得到错误 java.lang.UnsatisfiedLinkError: com.packag