Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我如何将我的对象的百分比构造为女性?_Java_Repast Simphony - Fatal编程技术网

Java 我如何将我的对象的百分比构造为女性?

Java 我如何将我的对象的百分比构造为女性?,java,repast-simphony,Java,Repast Simphony,我有一个代理类,可以执行以下操作: public class Agent { private Context<Object> context; private Geography<Object> geography; public int id; boolean female; public Agent(Context<Object> context, Geography<Object> geography, int

我有一个代理类,可以执行以下操作:

public class Agent {


private Context<Object> context;
    private Geography<Object> geography;
    public int id;
    boolean female;

public Agent(Context<Object> context, Geography<Object> geography, int id, boolean female) {
    this.id = id;
    this.context = context;
    this.geography = geography;
    this.female = female;
}  

... setters getters
... do things methods

}
公共类代理{
私人语境;
私人地理;
公共int id;
布尔母;
公共代理(上下文、地理、int-id、布尔型){
this.id=id;
this.context=上下文;
这个。地理=地理;
这个。女性=女性;
}  
…二传手
…做事的方法
}
在context builder类中,我的代理被添加到上下文(由纬度和经度坐标组成的地理空间)中,我希望使我的代理的随机百分比为女性(女性=真)

for(int i=0;i<100;i++){
代理=新代理(上下文、地理位置、i、false);
int id=i++;
如果(id>50){
布尔值=真;
}
添加(代理);
//指定添加代理的位置
坐标坐标坐标=新坐标(-79.6976,43.4763);
点几何=工厂创建点(坐标);
地理。移动(代理,geom);
}

我相信上面的代码将最后50名特工定义为女性。我怎样才能使它们被随机创建为女性?我改变了创建的代理的数量

使用您的代码,您总是创建一个男性代理

在创建
代理的实例之前,尝试评估它是否为女性:

Agent agent = null;
boolean isFemale = false;
for (int i = 0; i < 100; i++) {
        int id = i++;
        if(id > 50) {
            isFemale = true;
        }
        agent = new Agent(context, geography, i, isFemale);
        context.add(agent);
        //specifies where to add the agent
        Coordinate coord = new Coordinate(-79.6976, 43.4763);
        Point geom = fac.createPoint(coord);
        geography.move(agent, geom);
    }
希望这有帮助

Random Random=new Random();
        Random random = new Random();

        for (int i=0; i < 100; i++)
        {
            boolean isFemale = (random.Next(2) % 2 == 1);
            ...
        }
对于(int i=0;i<100;i++) { 布尔值isFemale=(随机。下一个(2)%2==1); ... }
您可以在for循环外部创建一个Random实例,并使用Random.nextBoolean()作为代理()的布尔女性属性的参数。

代理=新代理(上下文、地理位置、i、isFemale)可以移动到if和else语句之外。然后您可以通过执行以下操作来删除isFemale:agent=newagent(上下文、地理位置、i、id>50);我对此很在行。这是基于OP的代码。OP可以进一步优化它=),而且很可能您可以移动coord=。。。和geom=。。。在循环之外。
        Random random = new Random();
        agent = new Agent(context, geography, i, random.nextBoolean());
        Random random = new Random();

        for (int i=0; i < 100; i++)
        {
            boolean isFemale = (random.Next(2) % 2 == 1);
            ...
        }