c - 用1随机填充100X100矩阵的100格

标签 c random probability

我有一个 M[100][100] 的矩阵,全部用 ZERO 填充。现在我想用“1”随机填充 100 个网格。我该怎么做?

我面临的挑战:

当我随机选择任何位置 (x, y) 时,该位置可能已经被 1 填充。我必须最小化 rand() 调用次数。是否可以在 100 rand() 调用限制内填充?

问题被标记为重复 another question但这不能解决我的问题?二维矩阵有什么通用的想法吗?

最佳答案

使用 Fisher-Yates 解决方案 from this answer .具体来说,您希望一次创建一个包含数字 0 ... 9999 的数组,其中 x = i % 100y = i/100,说。

或者,如果您愿意,您也可以使用 struct coords { char x, y; 数组}

然后你只洗牌前(或最后)100 个元素,之后那些前(最后)100 个元素将是你的坐标。您可以重复使用相同的数组而无需进行后续初始化。每 100 个随机填充只需要生成恰好 100 个随机数。

关于c - 用1随机填充100X100矩阵的100格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49357268/

相关文章:

c - 简单的 C 程序,未知的输出

haskell - 具有MaybeT和RandT的Monad变压器堆栈

python - 使用 scipy.stats.hypergeom 从 SciPy 中的牌组绘制卡片

numpy - 计算 xarray 中每个网格点的百分位

c - pthread mutex 两个线程互换锁定/解锁是有效的方法吗?

c - 值0的套接字类型是什么类型?

c - 返回 "ENOTDIR"、 "EBUSY"等字符串的函数?

sql - 设置为特定日期的随机顺序

random - SAS 随机采样

SQL Server 等效于 Excel 的 TINV 函数