2013-11-27 72 views
0

我創建了一個類,我們稱之爲classA。我想在函數main()中創建一個隨機數的對象。我怎樣才能做到這一點,而不同地命名它們?我試過了絕望:創建隨機數量的對象

int a[100],i ,rnd; 

srand (time(NULL)); 

rnd=(rand() %100);  
for(i=0;i<=rnd;i++){ 
    classa a[i]; 
} 

但我知道這是行不通的。

+0

使用std ::向量。矢量可以動態調整大小。 –

回答

5

使用這樣的事情:

std::vector<a> v(rand() % 10000); // creates [0, 10000) objects 
+2

除了使用'std :: uniform_int_distribution'和'std :: mt19937'來避免模偏差。 – rightfold

+1

@rightfold一個談話,突然蘭特()是邪惡的:)。模數後是否統一? - 不(通常不是,就是這樣)。你真的在意嗎?我敢說你通常不會。 – ScarletAmaranth

+0

@ScarletAmaranth不,在那之前是有問題的,但我想現在的問題正在得到更廣泛的報道。我[是](http://stackoverflow.com/a/8157725/365496)[推薦](http://stackoverflow.com/a/8317726/365496)[反對](http://stackoverflow.com/a/9485149/365496)使用'rand()'並贊成'',因爲C++ 11已經完成了,引用了許多與STL在他的演講中指出的相同的問題。 – bames53

0
std::random_device rd; 
std::mt19937 gen(rd()); 
std::uniform_int_distribution<> dis(1, 6); 

std::map<std::string, a> objects; 

for (int i=0; i < dis(gen); ++i) 
     objects.insert(std::make_pair("obj_"+std::to_string(i), a()));