2013-04-27 83 views
-4

我做錯了什麼?我想要a隨機數字。負和整數數字正數和負數

#include <iostream> 
#include <cstdlib> 
int main(){ 
    int a; 
    cin<<a; 
    int t[a]; 
    for(int i=0;i<a;i+=1) 
     t[a]=rand(); 
    for(int i=0;i<a;i++) 
     cout>>t[i]; 
} 

我很初學者,我想有隨機數,但我只有一個非常大。 任何人都可以幫忙嗎?

對不起,但你看到我沒有的問題。現在我知道我應該只寫>>endl

編輯: 我糾正我的代碼和它的作品現在

#include <cstdlib> 
#include <time.h> 
int main(){ 
    int a; 
    cin>>a; 
    for(int i=0;i<a;i++) 
     cout<<(rand()-rand())<<endl;//i asked only for this "endl" 
} 
+2

'我在做什麼錯?'將此問題標記爲'c#' – I4V 2013-04-27 22:17:13

+0

此外,甚至沒有試圖通過發佈錯誤來獲得幫助。 – chris 2013-04-27 22:20:31

+0

此外,不張貼實際的代碼。 – 2013-04-27 22:20:58

回答

1
cin<<a; 

在這裏,你使用了錯誤的操作。將角括號視爲顯示數據流。你想:

cin>>a; 

同樣與cout

cout<<t[i]; 

您還索引ta,而不是i,在第一for循環:

t[i]=rand(); 
//^ This is i, not a 

的另一個問題是您正在使用編譯器擴展來創建運行時大小的數組。也就是說,對於標準的C++,不能使用a作爲數組的大小,因爲它在編譯時並不知道。

+0

好吧,我做到了。但那不是問題。我只是寫錯了。 Cout too – Antua 2013-04-27 22:17:26

+0

@Antua查看上次修改。 – 2013-04-27 22:18:52

+0

我在dev-C++中運行,它的權利。我告訴你,我的初學者 – Antua 2013-04-27 22:19:16

1
t[i]=rand(); 

t[a]=rand(); 

還是你寫的錯嗎?

+0

太,對不起 – Antua 2013-04-27 22:24:39

+0

如果你想要負數,那麼你只需要從rand()返回的值中減去一些東西。 rand()只返回正數。 – john 2013-04-27 22:25:55

2

您還沒有播種隨機數發生器。在程序開始時致電srand()

的通常方法是什麼當前時間是調用它:

std::srand(std::time(0)) 

你需要包括<ctime>了。

請注意,rand()doesn't return negative values,您需要自己執行該邏輯。

1

我不能肯定在100%,但IMO,rand()只能創建正數,從065535,這取決於可執行文件編譯時:這意味着,一旦你已經編譯.exe文件,它會一遍又一遍地給相同的數字!

爲了讓他產生不同的數字,你必須使用srand()

另一件事: 在C++中,您不能使用type array[n] [它不在標準!]中分配動態數組,即使編譯器允許您這樣做! 實際上,編譯器將您的代碼翻譯爲array = new type[n],您必須使用delete[]關鍵字釋放代碼。