Java 为什么for循环中的这个变量没有被重置为&x27;什么是初始值?
我有这个程序代码,它试图创建类似蒙特卡罗模拟的东西。基本上,赌徒从给定的英镑赌注开始,在破产或达到目标之前下注1英镑 程序代码按预期工作,但是,我遇到的问题是语句“int cash=stack”;我想知道变量“cash”如何在每次迭代中正确更新 我不明白为什么它没有重置回初始值“stake”,这是主for循环之外的用户输入。例如,如果目标是500,股份是100,为什么现金不总是保持100,如果是,它将如何达到500的目标Java 为什么for循环中的这个变量没有被重置为&x27;什么是初始值?,java,for-loop,variables,while-loop,variable-assignment,Java,For Loop,Variables,While Loop,Variable Assignment,我有这个程序代码,它试图创建类似蒙特卡罗模拟的东西。基本上,赌徒从给定的英镑赌注开始,在破产或达到目标之前下注1英镑 程序代码按预期工作,但是,我遇到的问题是语句“int cash=stack”;我想知道变量“cash”如何在每次迭代中正确更新 我不明白为什么它没有重置回初始值“stake”,这是主for循环之外的用户输入。例如,如果目标是500,股份是100,为什么现金不总是保持100,如果是,它将如何达到500的目标 public static void monteCarlo() {
public static void monteCarlo() {
Scanner input = new Scanner(System.in);
System.out.println("Please enter stake, goal, " + " and number of tries");
int stake = input.nextInt();
int goal = input.nextInt();
int tries = input.nextInt();
int wins = 0;
// repeat experiment
for (int i = 0; i < tries; i++) {
// do one gambler's ruin experiment
int cash = stake;
while (cash > 0 && cash < goal) {
// flip coin and update
if (Math.random() < 0.5) cash++;
else cash--;
}
if (cash >= goal) {
wins++;
}
}
System.out.println(wins + " wins of " + tries);
}
public static void monteCarlo(){
扫描仪输入=新扫描仪(System.in);
System.out.println(“请输入桩号、目标“+”和尝试次数”);
int stack=input.nextInt();
int-goal=input.nextInt();
int trys=input.nextInt();
int=0;
//重复实验
for(int i=0;i0&&现金<目标){
//抛硬币和更新
if(Math.random()<0.5)cash++;
否则现金--;
}
如果(现金>=目标){
wins++;
}
}
System.out.println(wins+“wins of”+尝试次数);
}
if(Math.random()<0.5)cash++;
在这里,现金
增加的几率为50%。平均而言,现金
的价值基本保持不变
要想从100到500获得现金
,你需要在一场概率为50%的游戏中赢得大约400
继续运行程序,您可能会很幸运:)行
int cash=stack
(重新)将cash变量设置为始终相同的初始值
如果您输入5次试验和12个桩,则
cash++
和cash--
指令将更改它,直到达到最终条件
运行下面的详细变量可能会帮助您更清楚地了解它
包so20190412;
导入java.util.Scanner;
公共类MC{
公共静态void main(字符串[]args){
try(扫描仪输入=新扫描仪(System.in);){
System.out.println(“请输入桩号、目标“+”和尝试次数”);
int stack=input.nextInt();
int-goal=input.nextInt();
int trys=input.nextInt();
蒙特卡洛(赌注、目标、尝试);
}
}
公共静态无效蒙特卡洛(最终整数赌注、最终整数目标、最终整数尝试){
System.out.println(“以“+桩开始);
System.out.println(“目标是”+目标);
System.out.println(“将尝试:“+trys+”次”);
int=0;
//重复实验
for(int i=0;i0&&现金<目标){
//抛硬币和更新
if(Math.random()<0.5){
现金++;
System.out.println(“赢!多拿一欧元-新现金是”+现金);
}
否则{
现金--;
System.out.println(“损失一欧元-新现金为”+现金);
}
}
如果(现金>=目标){
wins++;
System.out.println(“现金超过目标-添加胜利!”);
}
System.out.println(“迭代结束-赌注:+赌注+”现金:+现金+”获胜:+获胜);
}
System.out.println(wins+“wins of”+尝试次数);
}
}
希望这能澄清情况 到底是什么问题?
现金
在for循环中重置,在while循环中递增或递减。“你还不明白什么?”迈克尔:是的,但如果现金在for循环中被重置,那么它将永远无法达到目标。比如说,现金一开始是100英镑,目标是500英镑。如果在for循环的每次迭代中将其重置为100,它将如何达到此目标?@RayZe,cash
在while循环中被修改,玩家要么达到目标,要么在while循环中崩溃。然后,在玩家赢或输之后,for循环点击下一个迭代并重置现金。for循环代表N个“游戏”。在N个游戏中的每一个游戏中,现金从赌注开始,然后(在while循环中)增加或减少,直到没有剩余,或者达到目标。然后下一个游戏开始(for循环的下一次迭代),现金被重置。
if (Math.random() < 0.5) cash++;