我在计算整数除法并显示为双精度(浮点)时遇到问题。
在较低的数字上,它显示为浮点数,但似乎将值四舍五入为 11.0、9.0、28.0。在尝试通过其他 StackO 帖子解决问题后,我似乎无法使其保持一致。我已经通过一些解决方案能够将其显示为浮点解决方案,但是通过测试命令运行,结果在它们是否显示为浮点时不一致。
编写一个程序 RandomWalkers.java,它接受两个整数命令行参数“r”和“trials”。在每个试验独立实验中,模拟随机游走,直到随机游走者与起点的曼哈顿距离为 r。打印平均步数。
随着 'r' 的增加,我们预计随机游走者会采取越来越多的步骤。但是还有多少步骤?使用 RandomWalkers.java 制定关于平均步数如何作为“r”函数增长的假设。
通过生成随机样本和聚合结果来估计未知量是蒙特卡罗模拟的一个例子——一种强大的计算技术,广泛用于统计物理学、计算金融和计算机图形学。
您不能调用除 java.lang 中的库函数(例如Integer.parseInt()
和Math.sqrt()
)之外的库函数。仅使用课程中已经介绍过的 Java 特性(例如,循环和条件,但不使用数组)。
阅读至少 30 多个不同的 StackOverflow 和其他各种网站页面,将整数除法显示为浮点(双)等,并尝试了其中的所有内容。
avgSteps = (double) totalNumSteps / trials;
将部分/所有变量更改为 Double
(totalNumSteps * 1.0) / trials;
(totalNumSteps + 0.0) / trials;
我有时会取得突破,但随后我对其进行了更多测试,但由于部分或全部参数传递给应用程序而失败。
下面的代码是代码的清理后的基本版本,减去上面的任何测试。
public class RandomWalkers {
public static void main(String[] args) {
int r = Integer.parseInt(args[0]);
int trials = Integer.parseInt(args[1]);
int x = 0;
int xx = 0;
int y = 0;
int yy = 0;
int numSteps = 0;
int totalNumSteps = 0;
double randNum = 0.0;
double avgSteps = 0.0;
for (long i = 0; i < trials; i++) {
while (Math.abs(x - xx) + Math.abs(y - yy) != r) {
randNum = Math.random();
if (randNum <= .25) {
// North
yy++;
} else if (randNum <= .5) {
// East
xx++;
} else if (randNum <= .75) {
// South
yy--;
} else {
// West
xx--;
}
numSteps++;
}
totalNumSteps += numSteps;
}
avgSteps = totalNumSteps / trials;
System.out.println("average number of steps = " + avgSteps);
}
}
慕雪6442864
慕慕森
相关分类