2016-03-17 58 views
0

我在使用隨機數發生器填充長整型數組和短整型隨機數字時遇到了問題。我可以用double和float類型的數組來做到這一點,但是對其他兩個類型沒有好運。我所提出的代碼只打印出數組中所有10個元素的1。填充隨機數值的長短整型數組

const int size = 10; 
short int* myShorts = new short[size]; 
long int* myLongs = new long[size]; 
... 
... 
// short fill 
std::cout << "Short Array: \n"; 
for (int i = 0; i < size; i++) 
{ 
    *(myShorts + i) = rand()/short(RAND_MAX)*50.f + 1.f; 
    std::cout << i << ": " << std::setprecision(4) << *(myShorts + i) << std::endl; 
} 

// long fill 
std::cout << "Long Array: \n"; 
for (int i = 0; i < size; i++) 
{ 
    *(myLongs + i) = rand()/long(RAND_MAX)*50.f + 1.f; 
    std::cout << i << ": " << std::setprecision(4) << *(myLongs + i) << std::endl; 
} 

我的結果是這樣的:

Short Array: 
0: 1 
1: 1 
2: 1 
3: 1 
4: 1 
5: 1 
6: 1 
7: 1 
8: 1 
9: 1 

Long Array: 
0: 1 
1: 1 
2: 1 
3: 1 
4: 1 
5: 1 
6: 1 
7: 1 
8: 1 
9: 1 

回答

0

可能:

*(myLongs + 1) = (float)rand()/(float)RAND_MAX * 50.f + 1.f; 

+0

每當發生這種情況,我得到的答案沒有數字在小數點右側。基本上就是整數。 –

+0

浮點數被轉換爲* long int *,因爲這是* myLongs的類型* ...如果您將* myLongs *聲明爲float - 它的工作原理... – obe

+0

哦,等等我的不好,你的代碼運行得很好。我期待着錯誤的解決方案。謝謝! @obe –