我有M[100][100]
的矩阵,所有矩阵都填充ZERO
。现在我想通过' 1'随机填写100个网格。我该怎么做?
我面临的挑战:
当我随机选择任何位置(x, y)
时,该位置可以由1填充。我必须最小化rand()
通话计数。是否可以填写100
rand()
来电限制?
问题被标记为与another question重复,但这不能解决我的问题? 2D矩阵的任何一般概念?
答案 0 :(得分:2)
使用Fisher-Yates解决方案from this answer。具体来说,您希望一次创建一个包含数字0 ... 9999的数组,其中包括x = i % 100
和y = i / 100
。
或者如果你愿意,你也可以使用struct coords { char x, y; }
数组。
然后,您只对第一个(或最后一个)100个元素进行洗牌,之后第一个(最后一个)100个元素将成为您的坐标。您可以重用相同的数组而无需后续初始化。每100个随机填充物仅需要生成100个随机数。