2016-12-14 44 views
-2

我試圖隨機獲得一個數組中的每列中的特定範圍之間的隨機數,以模仿賓果卡。陣列中的範圍內的隨機數

第一列應含有1號至10,從11中的第二列數爲20,第三個,21至30等,直到最後一列,其中包含從81到數字90.

這是基於下面的答案我修改後的代碼:

for (row = 0; row<3; row++) 
      { 
       for (col = 0; col<9; col++) 
       { 
        if (col == 0) 
        { 
         bingoCard[row][col] = (rand() % 10) + 1 + col * 10; 

        }//end of 1st col 

        else if (col == 1) 
        { 
         bingoCard[row][col] = (rand() % 10) + 1 + col * 10; 

        }//end of 2nd col 

        else if (col == 2) 
        { 
         bingoCard[row][col] = (rand() % 10) + 1 + col * 10; 

        }//end of 3rd col 

        else if (col == 3) 
        { 
         bingoCard[row][col] = (rand() % 10) + 1 + col * 10; 

        }//end of 4th col 

        else if (col == 4) 
        { 
         bingoCard[row][col] = (rand() % 10) + 1 + col * 10; 

        }//end of 5th col 

        else if (col == 5) 
        { 
         bingoCard[row][col] = (rand() % 10) + 1 + col * 10; 

        }//end of 6th col 

        else if (col == 6) 
        { 
         bingoCard[row][col] = (rand() % 10) + 1 + col * 10; 

        }//end of 7th col 

        else if (col == 7) 
        { 
         bingoCard[row][col] = (rand() % 10) + 1 + col * 10; 

        }//end of 8th col 

        else if (col == 8) 
        { 
         bingoCard[row][col] = (rand() % 10) + 1 + col * 10; 

        }//end of 9th col 

       }// end col for 

現在,該代碼輸出如下:

***New Game*** 
How many players? 
1 

Player : 1 's card 



2  18  25  5  16  26  8  17  22 
5  16  26  8  17  22  35  43  54 
8  17  22  35  43  54  63  73  82 

它仍然遙遠,一旦它進入過去的第三科拉姆N +從那裏一欄中的一個值是正確的?

+3

什麼是'rang'? –

+1

@SouravGhosh他可能的意思是範圍 – Adalcar

+0

1)每個範圍都是10的寬度,所以全部應該是'%10'或者等同的,但是'col == 1'到'col == 4 4'使用'11'。 /// 2)範圍對於col> = 5'來說甚至更好。例如'rand()%(60 + 1)+ 50'將在'[50..111]'中產生一個數字。 /// 3)我認爲你運行的代碼版本不同於你發佈的版本。我沒有看到'rand()%((40 + 1) - 30)+ 30'如何產生'5'(因爲你正在給非負數加上'30')。 – ikegami

回答

0

你真的只是生成一個0-9之間的隨機數,並添加到每個列的「基數」。這是一個完整的例子;

#include <stddef.h> 

#define ROWS 3 
#define COLS 9 
int bingoCard[ROWS][COLS]; 

main() 
{ 
    int col, row; 

    srand(time(NULL)); 

    for (row = 0; row<ROWS; row++) 
    { 
     for (col = 0; col<COLS; col++) 
     { 
      bingoCard[row][col] = (rand() % 10) + 1 + col*10; 
     } 
    } 

    for (row = 0; row<ROWS; row++) 
    { 
     for (col = 0; col<COLS; col++) 
     { 
      printf("%d\t", bingoCard[row][col]);   
     } 
     /* put a newline */ 
     puts("");  
    } 
} 
+0

我更新了我的代碼與您的建議,但我必須在這裏失去明顯的東西? – ICM89

+0

@ ICM89這是一個更完整的例子。 – cleblanc

1

這是執行非常簡單的任務

獲取範圍內的隨機數的一個令人費解的手段是(rand() % range_size) + range_start一件簡單的事情。

這裏

for (col = 0; col < 9; col++) 
{ 
    for (row = 0; row < 3; row++) 
    { 
     bingoCard[row][col] = rand() % 10 + (col * 10 + 1); 
    } 
} 
+0

你想要考慮'RAND_MAX',並且最有可能是想要的,例如:'srand(time(NULL));'在調用'rand()'之前。 – alk