Circle中的随机路径,Python 2.7

时间:2017-10-13 12:27:08

标签: python python-2.7 numpy random

I'm trying to generate a random path from the center of a circle and count how     many steps it takes to exit the circle, my programming language is python 2.7. I've imported random and numpy.

我写了一些伪代码来帮助我记住我想要完成的事情:

Start at center of circle
Keep track of step count
Step distance=1 step
Radius of Circle=500 steps
While location<500 steps from center:
    take=1 step in random angle direction
    continue while loop
How many steps?

我在使用此代码的每个部分时遇到问题。我不知道从哪里开始 我想我必须附加一个数组,以便我知道何时退出圆圈但我不知道如何跟踪我的坐标。

更新

这是我到目前为止编写的代码,它将在我进行更改时更新:

#Start code
#Import modules
import numpy

#Define constants
r=500
step=1
step_count=0

#Defining origin in circle
x=0
y=0


#While inside the circle
while (x**2+y**2)**(1./2.)<=r:
    x_step=step*numpy.cos(numpy.random.beta(0.,2.,1./180.)
    y_step=step*numpy.sin(numpy.random.beta(0.,2.,1./180.)
    x+=x_step
    y+=y_step
    step_count+=1

#Print answer
print step_count

要纠正的事情:

  • y_step =步骤* numpy.sin(numpy.random.beta(0,2,1。/ 180)

SyntaxError:语法无效

  • ???

2 个答案:

答案 0 :(得分:0)

所以,你几乎就在那里。

这是一个只使用math的解决方案。 (也是python3)

import math, random

#Define constants
r = 500
step = 1

#define state
step_count = 0

#Defining origin in circle
x=0
y=0

#While inside the circle
while (x**2 + y**2)**(1./2.) <= r:
    angle = 2 * math.pi * random.random() 
    x_step = step * math.cos(angle)
    y_step = step * math.sin(angle)
    x += x_step
    y += y_step
    step_count += 1

#Print answer
print(step_count,x,y)

示例输出:

433126 65.02643317539659 495.86845856661375

请注意我曾经计算过一次随机角度并用它来计算一个步骤。

答案 1 :(得分:0)

我不想让这个帖子没有答案。这是我最终代码的一个例子:

string json = "{\"CallResult\":[{\"CompanyId\":\"AAA900134-904\",\"CompanyName\":\"MID\"}]}";

JavaScriptSerializer js = new JavaScriptSerializer();
var callres = (CallResultClass)js.Deserialize(json, typeof(CallResultClass));

var companyInfo = callres.CallResult;

非常感谢所有回答的人,特别是@quamrana