Java程序不像python程序那样工作,我不知道为什么
I am currently learning java, I know Python just fine, but I can't seem to make my java problem work the same way as my python program. Here is the python program:
我目前正在学习java,我知道Python很好,但我似乎无法让我的java问题与我的python程序一样工作。这是python程序:
import random as rand
successes = 0
for x in range (1000):
stake = 100
bets = 0
while stake >0 and stake <200:
play = rand.randint(0,1)
bets +=1
if play == 0:
stake = stake -1
else:
stake = stake + 1
if stake == 200:
successes +=1
print ('stake = ', stake, 'bets made =', bets)
print (successes/1000)
print(bets/1000)
when I run it I get something like this:
当我运行它时我得到这样的东西:
stake = 0 bets made = 19832
stake = 200 bets made = 5240
stake = 200 bets made = 3156
stake = 0 bets made = 10338
stake = 200 bets made = 11198
stake = 0 bets made = 6150
stake = 200 bets made = 10934
stake = 200 bets made = 11368
stake = 0 bets made = 8724
stake = 0 bets made = 17158
stake = 200 bets made = 6158
stake = 200 bets made = 7690
stake = 200 bets made = 2170
stake = 200 bets made = 12268
stake = 0 bets made = 15878
stake = 200 bets made = 16486
stake = 0 bets made = 6396
0.518
6.396
Now here is what I did for my java program I was told to use Math.random() and Math.Round() and I think that may be where I'm running into a problem I have no idea where to put Math.Round()
现在这里是我为我的java程序做的事情我被告知要使用Math.random()和Math.Round(),我想这可能是我遇到问题的地方我不知道在哪里放Math.Round ()
public class Gambler {
public static void main(String[] args){
double successes = 0;
for (int i = 0; i <1000;i++){
double stake = 100;
double bets = 0;
while(stake>0 && stake <200){
bets++;
if (Math.random()<0.5) stake ++;
else stake --;
if (stake==200) successes++;
System.out.println("stake = "+ stake + " bets made = " + bets);
}
System.out.println("average successes = " + successes/1000);
System.out.println("average bets = " + bets/1000);
}
}
}
When I run this one I get this
当我运行这个时,我得到了这个
stake = 196.0 bets made = 10290.0
stake = 197.0 bets made = 10291.0
stake = 198.0 bets made = 10292.0
stake = 197.0 bets made = 10293.0
stake = 196.0 bets made = 10294.0
stake = 197.0 bets made = 10295.0
stake = 198.0 bets made = 10296.0
stake = 197.0 bets made = 10297.0
stake = 198.0 bets made = 10298.0
stake = 197.0 bets made = 10299.0
stake = 196.0 bets made = 10300.0
stake = 195.0 bets made = 10301.0
stake = 196.0 bets made = 10302.0
stake = 197.0 bets made = 10303.0
stake = 196.0 bets made = 10304.0
stake = 197.0 bets made = 10305.0
stake = 196.0 bets made = 10306.0
stake = 197.0 bets made = 10307.0
stake = 198.0 bets made = 10308.0
stake = 199.0 bets made = 10309.0
stake = 200.0 bets made = 10310.0
average successes = 0.512
average bets = 10.31
2 个解决方案
#1
2
In python if stake == 200:
is outside of the while
loop, in java it's inside, similarly your outputs in java are inside the for
loop when they are outside it in python. I believe this is closer to your python code.
在python中,如果stake == 200:在while循环之外,在java里面,类似于java中的输出在python中位于for循环之外。我相信这更接近你的python代码。
public class Gambler {
public static void main(String[] args){
double successes = 0;
double bets = 0;
for (int i = 0; i <1000;i++){
double stake = 100;
bets = 0; // initialize outside of for loop
while(stake>0 && stake <200){
bets++;
if (Math.random()<0.5) stake ++;
else stake --;
}
if (stake==200) successes++;
System.out.println("stake = "+ stake + " bets made = " + bets);
}
System.out.println("average successes = " + successes/1000);
System.out.println("average bets = " + bets/1000);
}
}
更多相关文章
- 检测Python程序的执行效率
- 第一个简单的flask程序(有问题,求大神帮忙解决)
- 怎样用Python3 写一个爬图片的程序?
- 使用python编写udp协议的ping程序
- 第一次写完整的Python GUI程序
- 简单的车牌识别预处理小程序
- 踏出第一步——安装并跑通python程序
- 轮询Web服务的最佳方式(例如,对于Twitter应用程序)
- 大神程序员对python的理解与运用