猿问

车库模拟器 - 生成随机泊松分布

下面是我正在构建的汽车车库模拟器的代码。我坚持的是,能够生成汽车开到某个车库 (garage1) 直到那个车库满了,然后生成的汽车开到第二个车库。


因为我希望我的模拟按时随机工作。我必须使用某种泊松分布以某种方式生成汽车。但是,如果第一个车库很忙,我似乎无法获得有关如何生成它们并让它们移动到另一个的灵感。(在这里,我只有一个车库,这是目标)


 class People(object):

       def __init__(self,c,xpos,ypos,speed,xgoal,ygoal):

           self.c=c

           self.xpos=xpos

           self.ypos=ypos

           self.speed=speed

           self.xgoal=xgoal

           self.ygoal=ygoal


      def show(self):

          #stroke(0)

          fill(self.c)

          rectMode(CENTER)

          rect(self.xpos,self.ypos,20,10)


    def drive(self):

        self.xpos=self.xpos + (self.xgoal - self.xpos)*0.05 * self.speed

        self.ypos=self.ypos + (self.ygoal - self.ypos)*0.05 * self.speed


    person1=People(color(255,0,0),35,280,1,120,10)

    person2=People(color(0,255,0),60,280,1,300,15)


def setup():

    size(450,320)


def draw():

    person1.show()

    person1.drive()

    person2.show()

    person2.drive()


胡子哥哥
浏览 288回答 4
4回答

海绵宝宝撒

Numpy 可以从泊松分布中随机抽取样本。对于给定的均值和样本数量,您可以使用import numpy as npmean = 5N = 100samples = np.random.poisson(lam=mean, size=N)

慕容森

对您标题中问题的纯 Python 答案(这似乎与您的整体问题仅松散相关):import random, mathdef poisson(rate):&nbsp; &nbsp; &nbsp;t = 0&nbsp; &nbsp; &nbsp;count = 0&nbsp; &nbsp; &nbsp;while t < 1:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; t -= math.log(random.random())/rate&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; count += 1&nbsp; &nbsp; &nbsp;return count - 1此答案使用的事实是,如果事件以一定速率以指数分布的到达间隔时间到达,则给定时间单位内的到达次数以相同的速率遵循泊松分布。虽然它不会像 numpy 解决方案那么快,但它仍然相当快。我能够在不到一秒的时间内以 rate = 10 生成 100,000 个样本。
随时随地看视频慕课网APP

相关分类

Python
我要回答