大家好我是個剛學python的小白,下面的程式碼一直說main的語法錯誤,但我找網路還是看不懂要怎麼解決,希望各位大佬幫幫忙,非常感謝!
int main() {
int N=10000;
int M=0;
for (int i=1; i<=N; i++) {
double px=rand()/(double)RAND_MAX;
double py=rand()/(double)RAND_MAX;
if (pxpx+pypy<=1.0) M += 1;
}
print("%.12lf\n", 4.0*M/N);
return0;
}
Python 程式碼:
import random
N = 10000 # 總共的點數
M = 0 # 落在圓內的點數
# 隨機產生座標
for i in range(1, N + 1):
px = random.random() # 在 x 軸上的座標
py = random.random() # 在 y 軸上的座標
# 判斷是否在圓內,是的話則 M+1
if px * px + py * py <= 1.0:
M += 1
# 計算圓周率,並印出
print("%.12lf" % (4.0 * M / N))
感覺是要做 Monte Carlo 求 π 的近似值⋯⋯
這是(有點錯誤的) C/C++ 喔!要執行的話要存成 program.c
或 program.cpp
然後使用
(C 語言)gcc -o program program.c
(C++)g++ -o program program.cpp
進行編譯
最後再用./program
應該就可以執行了
C 語言:
#include <stdio.h>
#include <stdlib.h>
int main() {
int N = 10000;
int M = 0;
for (int i = 1; i <= N; i++) {
double px = rand() / (double) RAND_MAX;
double py = rand() / (double) RAND_MAX;
if (px * px + py * py <= 1.0)
M += 1;
}
printf("%.12lf\n", 4.0 * M / N);
return 0;
}
C++:
#include <iostream>
#include <cstdlib>
int main() {
int N = 10000;
int M = 0;
for (int i = 1; i <= N; i++) {
double px = rand() / (double) RAND_MAX;
double py = rand() / (double) RAND_MAX;
if (px * px + py * py <= 1.0)
M += 1;
}
printf("%.12lf\n", 4.0 * M / N);
return 0;
}
對應翻譯成 Python 會是
import random # 這邊就跟 C/C++ 要 include 類似
def main() -> int:
N: int = 10000
M: int = 0
for i in range(1, N + 1):
# 產生 [0, 1) 的亂數
px: float = random.random()
py: float = random.random()
if px * px + py * py <= 1.0:
M += 1
# 注意語法有點不太一樣喔
print("%.12lf" % (4.0 * M / N))
# 然後 Python 不需要 return 0,
# 但如果包成 main() 要也可以
return 0
if __name__ == "__main__":
main()
存成 program.py
然後打 python program.py
就行了