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