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

2024-05-14 22:03:30 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我的代码车库模拟器,我正在建设。我被困的是,能够生成汽车开到某个车库(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()

Tags: selfdefshowdrivepeople汽车车库color
2条回答

对标题中问题的纯Python回答(似乎只与整个问题松散相关):

import random, math

def poisson(rate):
     t = 0
     count = 0
     while t < 1:
          t -= math.log(random.random())/rate
          count += 1
     return count - 1

这个答案使用了这样一个事实:如果事件以一定的速率以指数分布的间隔时间到达,那么在给定的时间单位内到达的次数遵循相同速率的泊松分布。虽然它不会像numpy解决方案那样快,但它仍然相当快。我能够在不到一秒钟内生成100000个样本,速率=10。在

Numpy可以从Poisson分布中随机抽取样本。对于给定的平均值和样本数,可以使用

import numpy as np

mean = 5
N = 100

samples = np.random.poisson(lam=mean, size=N)

相关问题 更多 >

    热门问题