Как я могу построить процент моих объектов как женщин?

У меня есть класс агента, который делает вещи:

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

}

В классе конструктора контекста, где мои агенты добавляются в контекст (географическое пространство, состоящее из координат широты и долготы), я хочу сделать случайный процент от моего агента (женский = true).

for (int i = 0; i < 100; i++) {
        Agent agent = new Agent(context, geography, i, false);
        int id = i++;
        if(id > 50) {
            boolean female = true;  
        }
        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);
    }

Я полагаю, что код выше строит последние 50 агентов как женщины. Как я могу сделать так, чтобы они были случайно созданы как женщины? Я меняю количество созданных агентов совсем немного.

3 ответа

Решение

С вашим кодом вы ВСЕГДА создаете агента MALE.

попробуйте оценить, если это женщина, прежде чем создавать экземпляр Agent:

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 random = new Random();
        agent = new Agent(context, geography, i, random.nextBoolean());

надеюсь это поможет

Вы можете создать один экземпляр Random вне вашего цикла for и использовать random.nextBoolean() в качестве параметра для вашего логического женского атрибута agent().

        Random random = new Random();

        for (int i=0; i < 100; i++)
        {
            boolean isFemale = (random.Next(2) % 2 == 1);
            ...
        }
Другие вопросы по тегам