ACDBBB 2021-10-10 20:57 采纳率: 0%
浏览 18

一个关于输出顺序的问题

刚学python不久,要做蒙特卡洛法解π值这个问题,然后我发现我的输出把最后一个参数第一个输出了。
就比如:我输入顺序是2^10,2^15,2^20,但是输出会先输出2^20的结果之后,再依次输出其他的。想请教各位这是什么问题,可以怎样修改。
以下是代码:

# 蒙特卡洛法解π值

'''
   输入:抛点数
   处理:计算每个点到圆心的距离,统计在圆内点的数量
   输出:π值
'''
#蒙特卡洛法解π
#搞一个半径为1的1/4圆
from random import random       #random函数随机返回一个在(0,1)间的浮点数
from math import sqrt           #sqrt 是math库中用来开平方的
from time import perf_counter   # time.clock()在3.3版本后已移除,可使用perf_counter()或者process_time()代替
import sys
import importlib
from prettytable import PrettyTable
importlib.reload(sys)

Temp = [2 ** 10, 2 ** 15, 2 ** 20, 2 ** 25, 2 ** 26, 2 ** 27]
table = PrettyTable(['num','PI','time'])
for j in range(len(Temp)):
    darts=Temp[j-1]                  #设定"飞镖"数
    hits=0.0                     #初始击中个数
    t = perf_counter()
    for i in range (1,darts+1):
        x,y = random(), random()           #用两个随机抛点(x,y)的坐标
        dist = sqrt(x ** 2 + y ** 2)      #"飞镖"到靶心的距离, **代表求平方
        if dist <= 1.0:
            hits = hits + 1            #假如飞镖飞到的地方恰在离圆1或1以内,个数+1
    pi = 4 * (hits / darts)           #循环结束后,在离圆心1以内的点数/所有飞镖数,
                                  #因为设定的时候是1/4圆,所以还要乘四。
    print("Pi的值是:{}.".format(pi))   
    print("运行时间是:{:5.5}s".format(t))
    
    
    table.add_row([darts, pi, t])
print(table)

以下是运行结果:

img

  • 写回答

1条回答 默认 最新

  • 提着脑袋去学习 2021-10-10 22:58
    关注

    line21 darts=Temp[j-1]
    这个for循环里面 j从0 开始的,那么darts = Temp[-1]也就是Temp的最后一个数。

    修改方法 : darts = Temp[j] 应该就可以了

    评论

报告相同问题?

问题事件

  • 修改了问题 10月10日
  • 创建了问题 10月10日

悬赏问题

  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
  • ¥100 matlab2009 32位一直初始化
  • ¥15 Expected type 'str | PathLike[str]…… bytes' instead
  • ¥15 为什么在iis上部署网站,服务器可以访问,但是本地电脑访问不了
  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数
  • ¥15 ADS时域 连续相位观察方法
  • ¥15 Opencv配置出错
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我