試してみたコード
Python
1import numpy as np 2size = 10000 3 4if y - x > 0: 5 x = np.random.uniform(-1, 1, size) 6 y = np.random.uniform(-1, 1, size) 7area = x**2 + y**2 8print(4*len(area[area < 1])/size)
上のようなコードで求めようとしたのですがどうしてもy=xより大きいというのを表現できません.
エラーコードは
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
このようになり,any()やall()を使うと全く違った意味になってしまい困っています.
forとwhileを使わずに答えが求められるコードはどう書いたら良いのでしょうか?
なにかの課題でしょうか?
そういうのは自分でやらないと意味がないように思います
半径1の円内とy>xの共通部分の面積って、それ半円の面積じゃないですかね。
手計算で求めるのは簡単ですがPythonでやろうとすると上手く行かずに困っています.
Pythonで、言うよりは、乱数を使って求めたいという事?
面積だけならば、半円の計算式をPythonで表現するだけですね。
でもそれは求める答えではない、、、と。
その表現の方が正しいです.
y=xより大きい部分の円というのをnumpyで発生させた乱数を用いて分類(?)させるのがまだ出来ずに困っています...
ちなみにy_waiwaiさんへの解答ですが,課題はこれの3次元版で答えをそのまま聞くのはまずいと思い2次元で質問をしてそれを三次元で応用しようと思いました.わからない部分は尋ねるしか無いと思うので意味はあると思います.
最近、モンテカルロ法で円の面積を求めたいと言う人がわけのわからないことを言って退会したような気がします。
Zuishinさんが暇なのはわかるのですがお互い有益でないと思うので粘着するのはやめていただきたいです...
せっかくの休日ですしお互い有意義に使いましょうよ...
確信しました。
for文やwhile文を使ってはいけない理由と求めたい値の精度(円周は3でいいレベル?)を追記ください。
内包表記使えという課題ですかね。それとも再帰か。太字なので好意的に読むとわかるそうで、下手にエスパーすると悪意があるとして絡まれます。
特に好意も悪意もないですが、質問(課題?)の意図がよく分かりませんね…
回答3件
あなたの回答
tips
プレビュー