【发布时间】:2011-05-09 22:21:22
【问题描述】:
我想创建一个只有两个值的多维数组:0 或 1。
我使用 srand/rand 函数,但数组只包含 0。 这是代码:
#define NB_LINE 4
#define NB_COLUMN 11
int tab[NB_LINE][NB_COLUMN] ; // global variable
void generate() {
srand((unsigned int)time(NULL));
int n, i, j;
for(n = 0; n < NB_LINE*NB_COLUMN; ++n){
do
{
i = rand() % NB_LINE;
j = rand() % NB_COLUMN;
}
while (tab[i][j] != 0);
tab[i][j] = 1 ;
}
}
我不知道如何解决这个问题?
谢谢!
编辑:感谢您的回答。您是否认为 rand() 有可能每列只有一个“1”而其他点只包含 0 ?
【问题讨论】:
-
澄清一下:您希望阵列中的每个点随机有 1 或 0?
-
您应该标记您正在使用的语言。我会猜 c++,但如果你标记语言,你更有可能得到答案
-
我想生成一个数组,其中每个点包含 0 或 1。
-
“column”用“u”拼写。这不仅仅是迂腐。糟糕的拼写使代码更难阅读,可能导致错误,并导致其结果非常不幸(例如,臭名昭著的 HTTP“referer”字段)。
-
"but array contains only 0" -- 不,您的代码用 1 填充数组 -- 您搜索 44 次,查找 0,然后将其更改为 1。您可以使用通过循环直到
n < NB_LINE*NB_COLOMN/2,半 0 半 1,但这样做的速度很慢。
标签: c random multidimensional-array srand