Я написал это для создания случайных Candidate
объектов для заполнения ArrayList pop
. Каждый Candidate
содержит массив, и этот код его должен создать другой массив для каждого Candidate
:Почему этот случайный генератор возвращает один и тот же результат снова и снова?
ArrayList<Candidate> pop = new ArrayList<>();
int skinThicknes, attackDamage ,skinCoulor, canFly, canSwing, speed, flySpeed, swingSpeed, num = 0;
Random rnd;
rnd = new Random();
while(num < size) {
skinThicknes = rnd.nextInt(101);
attackDamage = rnd.nextInt(101);
skinCoulor = rnd.nextInt(3);
canFly = rnd.nextInt(1);
canSwing = rnd.nextInt(1);
speed = rnd.nextInt(1001);
flySpeed = rnd.nextInt(1001);
swingSpeed = rnd.nextInt(1001);
if(canFly == 0){flySpeed = 0;}
if(canSwing == 0){swingSpeed = 0;}
int[] array = {skinThicknes, attackDamage, skinCoulor, canFly, canSwing, speed, flySpeed, swingSpeed};
Candidate can;
can = new Candidate(array);
pop.add(can);
num++;
}
return pop;
Почему массивы каждого Candidate
в pop
равен?
Это конструктор для Candidate
. Все эти переменные (skinTicknes
, attackDamage
и т. Д.) Являются private static int
.
public Candidate(int[] geno){
skinTicknes = geno[0];
attackDamage = geno[1];
skinCoulor = geno[2];
canFly = geno[3];
canSwing = geno[4];
speed = geno[5];
flySpeed = geno[6];
swingSpeed = geno[7];
}
'rnd.nextInt (1);'? В самом деле? Как вы думаете, что это вернет? –
Как реализуется «Кандидат»? – resueman
0 или 1 ... это то, что я хочу, чтобы он вернулся – fatd