gpt4 book ai didi

java - 为不同的对象分配随机数

转载 作者:行者123 更新时间:2023-12-01 23:44:37 24 4
gpt4 key购买 nike

我有一个使用泊松分布随机生成数字的函数,并且我还有一个巴士类和一个巴士站类。现在我已经生成了 5 个公交车对象和 15 个公交车站对象。我的目标是为这五个公交车对象分配随机数以指示它们的公交车站位置。

private static int getPoissonRandom(double mean){
Random r = new Random();
double L = Math.exp(-mean);
int k = 0;
double p = 1.0;
do {
p = p * r.nextDouble();
k++;
} while (p > L);
return k - 1;
}

公交车站类别

public class busStop {
int bus_stop_id;
public busStop(){
this.bus_stop_id=bus_stop_id;
}
public void create_busStop(int total,int position){
for(int i=1; i<=total; i++){
bus_stop_id=i;
//System.out.println("Bus_Stop with ID:"+i+" Spawned");
setBusPosition(i,position);
}
}
public void setBusPosition(int bus_id, int stop_id){
System.out.println("Bus : "+bus_id+ " at Stop :"+stop_id);
}
}

巴士等级

public class Bus {
int capacity;
int bus_id=0;



public Bus(){
this.capacity=50;
this.bus_id=bus_id;
}

public void spawn_bus(int bus_total){
for(int i=1; i<=bus_total; i++){
bus_id=i;
System.out.println("Bus with ID:"+i+" created");
}
}

}

主要功能

    public static void main(String[] args) {
int bus_number=5;
int total_bus_stops=15;
Bus bus = new Bus();
busStop stops = new busStop();
getPoissonRandom(5);
bus.spawn_bus(bus_number);
stops.create_busStop(total_bus_stops,getPoissonRandom(5));

}

当我运行代码时,我不断获得分配给所有 5 个总线对象的一个​​数字,但我希望使用泊松分布生成器将不同的随机数分配给 5 个总线对象

最佳答案

您面临这个问题,因为您只调用了一次随机生成方法。要实现所需的输出,您需要在 create_busStopMethod 中调用 getPoissonRandom(doublemean)类似的东西:

    public void create_busStop(int total,int position){
for(int i=1; i<=total; i++){
bus_stop_id=i;
//System.out.println("Bus_Stop with ID:"+i+" Spawned");
setBusPosition(i,MainClass.getPoissonRandom(position));
}
}

然后调用该方法

stops.create_busStop(total_bus_stops,5);

或者您可以修改 creat_busStop 以接受 id 和位置而不是total_bus_stops,如下所示:

public void create_busStop(int id,int position){
bus_stop_id=id;
setBusPosition(id,position);
}

}

然后在for循环中调用该方法

for(int i=0;i<total_bus_stops;i++){
stops.create_busStop(i,getPoissonRandom(5));
}

关于java - 为不同的对象分配随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58245802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com