【问题标题】:Creating a random number of objects创建随机数量的对象
【发布时间】:2013-11-27 20:19:44
【问题描述】:

我创建了一个类,我们称之为classA。我想在函数main() 中创建随机数量的对象。我怎样才能做到这一点,同时以不同的方式命名它们?我绝望地尝试过:

int a[100],i ,rnd;

srand ( time(NULL) ); 

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

但我知道这行不通。

【问题讨论】:

  • 使用 std::vector。矢量可以动态调整大小。

标签: c++ class object


【解决方案1】:

使用这样的东西:

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

【讨论】:

  • 除了使用std::uniform_int_distributionstd::mt19937 来避免模偏差。
  • @rightfold 一次谈话,突然 rand() 是邪恶的 :)。模数后是否一致? - 不(通常不是)。你真的在乎吗?我敢说你通常不会。
  • @ScarletAmaranth 不,在那之前是有问题的,但我想现在问题的覆盖范围越来越广。我 was recommending against 使用 rand() 并支持 &lt;random&gt; 几乎自 C++11 完成以来,引用了 STL 在他的演讲中指出的许多相同问题。
  • rand() 过去和现在都很好。你只需要知道它的弱点。当然,您可以使用来自&lt;random&gt; 的东西来获得更准确的随机数(这是矛盾的说法吗?),但它是有代价的。对于像 rand() (和模)这样的简单愚蠢的事情仍然可以。
  • @rightfold:没有统一要求。 OP似乎已经决定了一种获得随机性的机制......
【解决方案2】:
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()));

【讨论】:

    猜你喜欢
    • 2013-08-20
    • 1970-01-01
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 2018-05-17
    • 2011-03-18
    • 1970-01-01
    相关资源
    最近更新 更多