用兰特将死细胞改变为活着的

时间:2018-03-04 10:35:37

标签: random

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个活细胞时,这段代码总是少一些。为什么呢?

1 个答案:

答案 0 :(得分:2)

您的问题

您的代码在每次迭代时选择一个随机单元格。但是您不会检查此单元格是否已存在。因此,您有时会在现有单元格之上创建一个新单元格。

解决方案

如果所选位置没有活细胞,您应该只创建一个新细胞,如下所示:

if (a->cells[y][x] != ALIVE)
  {
    a->cells[y][x] = ALIVE;
    living_cells++;
  }