首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想在Python中通过蒙特卡洛模拟找到'e‘的值,我得到的是NameError

我想在Python中通过蒙特卡洛模拟找到'e‘的值,我得到的是NameError
EN

Stack Overflow用户
提问于 2021-11-04 07:02:22
回答 1查看 26关注 0票数 0

#使用MonteCarlo模拟导入随机查找'e‘的值

FindE类:

代码语言:javascript
复制
def __init__(self):
    self.s = 0
    self.N = 1000000
    

def random_points(self):
    for i in range(1,100000):
        x = random.uniform(0, 1)
        self.s += x
        if self.s > 1.0:
            return i


def exceed_dict(self, N):
    d = dict()
    for _ in range(N):
        count = random_points()

        if count not in d:
            d[count] = 0
        d[count] += 1

    return d


def calculating_e(self):
    d = exceed_dict(N)
    print(sum([k*v for k, v in d.items()]) / N)

E=打印()FindE(e.calculating_e())

EN

回答 1

Stack Overflow用户

发布于 2021-11-04 08:03:33

您正在尝试调用python类中的变量和方法。在调用self.之前,不要忘记使用它。应该是这样的:

代码语言:javascript
复制
import random

class FindE:

    def __init__(self):
        self.s = 0
        self.N = 1000000
    

    def random_points(self):
        for i in range(1,100000):
            x = random.uniform(0, 1)
            self.s += x
            if self.s > 1.0:
                return i


    def exceed_dict(self, N):
        d = dict()
        for _ in range(N):
            count = self.random_points()

            if count not in d:
                d[count] = 0
            d[count] += 1

        return d


    def calculating_e(self):
        d = self.exceed_dict(self.N)
        print(sum([k*v for k, v in d.items()]) / self.N)
e = FindE()
print(e.calculating_e())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69835433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档