hzxwonder 发表于 2017-7-27 16:31:55

新手上路,随机数求π为什么有问题

import random
temp = input('请输入次数:')
n = int (temp)
t = 0
time = 0
while t < n :
    a=random.randint(-1,1)
    b=random.randint(-1,1)
    if a ** 2 + b ** 2 <= 1:
      time += 1
    t += 1
p = time / n
pi = 4 * p
print (pi)   

Krant5 发表于 2017-7-27 17:40:18

你可以先跟我说说思路,你就列个代码错了还不知道你啥意思呢

冬雪雪冬 发表于 2017-7-27 18:53:26

把06,07行改为:
    a=random.uniform(-1,1)
    b=random.uniform(-1,1)

hzxwonder 发表于 2017-7-27 20:17:43

冬雪雪冬 发表于 2017-7-27 18:53
把06,07行改为:

谢谢,uniform是什么?

hzxwonder 发表于 2017-7-27 20:21:24

Krant5 发表于 2017-7-27 17:40
你可以先跟我说说思路,你就列个代码错了还不知道你啥意思呢

先求所选的点(a,b)落在圆里的频数,再除以圆外接正方形的面积,得到概率P。P=(πr^2)/4,r=1,π=4P

冬雪雪冬 发表于 2017-7-27 20:21:56

hzxwonder 发表于 2017-7-27 20:17
谢谢,uniform是什么?

randint(-1,1)得到的是-1到1之间的整数,uniform(-1,1)得到的是小数。

hzxwonder 发表于 2017-7-27 21:53:14

冬雪雪冬 发表于 2017-7-27 20:21
randint(-1,1)得到的是-1到1之间的整数,uniform(-1,1)得到的是小数。

谢谢大佬{:10_256:}

ooxx7788 发表于 2017-7-28 16:14:37

Krant5 发表于 2017-7-27 17:40
你可以先跟我说说思路,你就列个代码错了还不知道你啥意思呢

蒙特卡洛模拟
页: [1]
查看完整版本: 新手上路,随机数求π为什么有问题