python - 蒙特卡洛模拟使用圆估计 pi

标签 python algorithm

我对下面的算法有疑问。让我困惑的是为什么 x = random.random()*2 -1y = random.random()*2 -1 而不是简单的 x = random.random()y = random.random()?完整代码如下:

import random

NUMBER_OF_TRIALS= 1000000
numberOfHits = 0

for i in range(NUMBER_OF_TRIALS):
    x = random.random()*2 -1
    y = random.random()*2 -1

    if x * x + y * y <=1:
         numberOfHits +=1
pi = 4* numberOfHits / NUMBER_OF_TRIALS

print("PI is", pi)

最佳答案

这个模拟中的圆以 (0, 0) 为中心,半径为 1,所以

x = random.random() * 2 - 1
y = random.random() * 2 - 1

将使每个范围为 -1 到 1。

关于python - 蒙特卡洛模拟使用圆估计 pi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51773034/

相关文章:

algorithm - 将 Big-O 递归算法简化为线性

python - python 中的 stdio.write 是什么?

javascript - 如何解决 javascript 中 JSON 中的意外标记 { 语法错误

python - 选择 Numpy 数组的最后一个值

c++ - 如何在C++中实现R的 "optimize"函数?

java - 选择一个随机项目但投票分数存在偏差?

python - 如何查找数组中的下一个最大值

python - 向 kivy 按钮添加 on_release Action

algorithm - 构造无限排序列表而不添加重复项

algorithm - 网络流算法相关问题