[編輯 - 新的信息,舊的代碼刪除]:
在這個代碼段,我產生類似於你做了什麼的行和列,但因爲我沒有random();
函數,我自己寫的。而且,我可以進行調整,以確保在創建的樣品中配對。這使您可以看到列和行內的「對」計數正確發生。沒有這種測試能力,我發現隨機函數很少創建相同值的連續樣本(一對)。在random()
函數中查找註釋,然後雙向運行,clock()
註釋(兩個位置),並取消註釋。
改性random()
功能:
trying = 1;
//val = clock(); //To force pairs, comment here
while(trying)
{
//while(val == clock()); //To force pairs, comment here
srand(clock());
下面是新的代碼:(不變形例所示的正上方)
#include <ansi_c.h>
enum {
row,
col
};
#define ROWS 20
#define COLS 30
int GetNumPairs(int arr[ROWS][COLS], int index, int type);
int random(int min, int max);
int main(void)
{
int i=0, j=0;
int array[ROWS][COLS];
int countPairs[260];
//int countPairsRows[260];
memset(array, 0, sizeof(int)*ROWS*COLS);
for(i=0;i<ROWS;i++)
{
for(j=0;j<COLS;j++)
{
array[i][j] = random('A', 'Z'); //min, max value to be produced
printf("%c", array[i][j]);
}
printf("\n");
}
printf("\n\n");
memset(countPairs, 0, sizeof(int)*260);//clear memory first
//pairs in columns, must traverse rows from 0 to 19
for(i=1;i<=ROWS;i++)
{
countPairs[i]=GetNumPairs(array, i-1, row);
printf("row %d has %d pairs\n", i, countPairs[i]);
}
printf("\n\n");
memset(countPairs, 0, sizeof(int)*260);//clear memory again
//pairs in rows, must traverse columns from 0 to 29
for(i=1;i<=COLS;i++)
{
countPairs[i]=GetNumPairs(array, i-1, col);
printf("col %d has %d pairs\n", i, countPairs[i]);
}
getchar();
return 0;
}
int random(int min, int max)
{
int random=0, trying=0;
clock_t val;
trying = 1;
val = clock(); //To force pairs, comment here
while(trying)
{
while(val == clock()); //To force pairs, comment here
srand(clock());
random = (rand()/32767.0)*(max+1);
((random >= min)) ? (trying = 0) : (trying = 1);
}
return random;
}
int GetNumPairs(int arr[ROWS][COLS], int index, int type)
{
int i, j,cnt=0;
switch(type){
case row:
for(i=0;i<COLS-1;i++)
{
if(arr[index][i] == arr[index][i+1])
{
cnt++;
}
}
break;
case col:
for(j=0;j<ROWS-1;j++)
{
if(arr[j][index] == arr[j+1][index])
{
cnt++;
}
}
break;
};
return cnt;
}
以下是示出了兩個圖(1 )通常生成的樣本,(小數對,爲0對),和第二與註釋clock()
功能生成數據,以迫使許多對:
通常生成的樣本:
樣品具有修飾的隨機()函數創建:
聽起來像你想要做的是一個填字遊戲。應該把這個問題。其次,你用x和y聲明你的數組,它們都是零。 – 2013-11-01 22:33:47
你能給出一個這樣的矩陣的一個簡單的例子,什麼定義一對?數組[x] [y] ==數組[x + 1] [y + 1]'也算作一對嗎? – PhillipD
char數組[0] [0];不是一個非常大的數組。肯定少於20或30。另外,我會把65換成'A'。 –