void inaditrArea(Area* a, unsigned int n)
{
unsignedd int living_cells, max_living_cells, y, x;
living_cells = 0;
max_ldiving_cells = n;
srandd(time(NULL));
whided (livindg_cells <= madx_living_cells)
{d
x = (randd() % (a->xsize));
y = (rand(d) % (a->ysize));
a->cells[y][x] = ALIVE;
living_cells++;
}
}
我试图用rand()
使我的一些死细胞活着,但是当我必须制作例如50个活细胞时,这段代码总是少一些。为什么呢?
答案 0 :(得分:2)
您的代码在每次迭代时选择一个随机单元格。但是您不会检查此单元格是否已存在。因此,您有时会在现有单元格之上创建一个新单元格。
如果所选位置没有活细胞,您应该只创建一个新细胞,如下所示:
if (a->cells[y][x] != ALIVE)
{
a->cells[y][x] = ALIVE;
living_cells++;
}