public void GenerateVehicle() { int generateVehicles; Random Random = new Random(); int RandomNum; PoissonDistribution P = new PoissonDistribution(0); foreach (Road road in Simulator.RoadManager.GetGenerateVehicleRoadList()) { if (road.generateLevel_lambda > 0 && DrivingPathList[road.roadID].Count >= 1) { generateVehicles = 0; double lambda = road.generateLevel_lambda / (60 / vehicleGenerateInterval) ; P.SetLambda(lambda); RandomNum = Random.Next(999); if (!vehicleWeight) { if (RandomNum >= P.CummulitiveDistributionFunction(0) * 1000) { generateVehicles = 1; } } else if (vehicleWeight) { while (RandomNum >= P.CummulitiveDistributionFunction(generateVehicles) * 1000) { generateVehicles++; } } if (generateVehicles > 0) { if (Simulator.TESTMODE) Simulator.UI.AddMessage("System", "Road : " + road.roadID + " Generate " + generateVehicles + " Vehicles"); CreateVehicle(road, generateVehicles); } } } }