元胞自动机中的“随机元素”是做什么的?

我在TutsPlus上阅读这篇关于使用元胞自动机生成程序级的文章。 我的问题出现在这个代码片段中:

float chanceToStartAlive = 0.45f; public boolean[][] initialiseMap(boolean[][] map){ for(int x=0; x<width; x++){ for(int y=0; y<height; y++){ if(random() < chanceToStartAlive){ map[x][y] = true; } } } return map; } 

在第一行中,作者声明了一个代表45%的浮动。 这是有道理的。 不过,这个角色对我来说还不清楚。 在这一行中:

 if(random() < chanceToStartAlive) 

正在生成一个随机数字,如果小于0.45f ,正在testing。 既然这是一个不等式,这个expression式可以返回true还是false正确的?

这个百分比究竟是如何影响这个循环?

谢谢!

我假设随机()产生一个0和1之间的随机数。这个数字将小于0.45 45%的时间。

我将用一个例子来告诉你为什么: 在这里输入图像说明

假设这些矩形表示一个字段,并且正在下雨。 我们想知道滴落在绿色部分的频率。 对于顶部的矩形,绿色部分是总矩形的一半。 所以一半的时间滴在绿色的部分。

在第二个问题上,绿色部分是总数的25%,所以25%的水滴将在那里结束。

在你的情况下,这意味着map[x][y] = true; 将被称为45%的时间。 换句话说,45%的布尔值将被设置为true。

chanceToStartAlive允许您select真实细胞的百分比。