我有一个 M[100][100]
的矩阵,全部用 ZERO
填充。现在我想用“1”随机填充 100 个网格。我该怎么做?
我面临的挑战:
当我随机选择任何位置 (x, y)
时,该位置可能已经被 1 填充。我必须最小化 rand()
调用次数。是否可以在 100
rand()
调用限制内填充?
问题被标记为重复 another question但这不能解决我的问题?二维矩阵有什么通用的想法吗?
最佳答案
使用 Fisher-Yates 解决方案 from this answer .具体来说,您希望一次创建一个包含数字 0 ... 9999 的数组,其中 x = i % 100
和 y = i/100
,说。
或者,如果您愿意,您也可以使用 struct coords { char x, y; 数组}
。
然后你只洗牌前(或最后)100 个元素,之后那些前(最后)100 个元素将是你的坐标。您可以重复使用相同的数组而无需进行后续初始化。每 100 个随机填充只需要生成恰好 100 个随机数。
关于c - 用1随机填充100X100矩阵的100格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49357268/