下面是我正在构建的汽车车库模拟器的代码。我坚持的是,能够生成汽车开到某个车库 (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()
4 回答
海绵宝宝撒
TA贡献1809条经验 获得超8个赞
Numpy 可以从泊松分布中随机抽取样本。对于给定的均值和样本数量,您可以使用
import numpy as np
mean = 5
N = 100
samples = np.random.poisson(lam=mean, size=N)
慕容森
TA贡献1853条经验 获得超18个赞
对您标题中问题的纯 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 解决方案那么快,但它仍然相当快。我能够在不到一秒的时间内以 rate = 10 生成 100,000 个样本。
添加回答
举报
0/150
提交
取消