2015-02-07 70 views
1

我想查看兩個滾動骰子的總和出現的次數。我正在寫下面的代碼向我展示與myArray的總和:計算兩個骰子的總和出現的次數

#include <iostream> 
#include <cstdlib> 
#include <ctime> 

using namespace std; 

int main() 
{ 
    srand (time(0)); 

    int myArray[12]; 

    for (int i =1; i < 10; i++) 
    { 
    int die_1 = rand() % 6 + 1; 
    int die_2 = rand() % 6 + 1; 

    myArray[(die_1 + die_2 - 2)]++; 


    cout<<endl<<"die_1 "<<die_1<<" die_2 "<<die_2<<" the sum: "<<die_1+die_2; 
    } 

    for (int i = 0; i < 12; i++) 
     cout<<endl<<myArray[i]<<" "; 
} 

但是代碼向我返回奇怪的結果。希望有任何幫助來糾正它。

+4

請記住,數組myArray中的值未初始化爲零。它們將包含堆棧中內存中的任何隨機數據。 – drescherjm 2015-02-07 15:28:56

+2

'int myArray [12] = {0};' – P0W 2015-02-07 15:36:59

+0

另外[不要使用'rand()'](http://channel9.msdn.com/Events/GoingNative/2013/rand-Considered-Harmful)。 – 2015-02-07 18:44:35

回答

4

你忘了初始化數組(10),因爲結果是[2-12]所以10個答案:

int myArray[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 

PS:看到你的結果,我認爲它像

for (int i = 0; i < 11; i++) 
    cout << "for res[" << i + 2 << "]:\t" << myArray[i] << endl; 
+0

是的,謝謝。只是我應該被添加到兩個,因爲最小值從2開始。 – SRYZDN 2015-02-07 15:39:47

1
更好

用0初始化myArray

memset(myArray, 0, sizeof(myArray)); 

否則,垃圾值會影響結果。