【发布时间】:2020-07-13 22:01:38
【问题描述】:
我正在尝试使用循环调用类函数
for (int i = 0; i < Basket.getLemonNum(); i++)
{
lemonWeights[i] = Fruit.generateWeight(fruit, fruitWeight);
cout << lemonWeights[i] << " ";
}
这转到 Fruit 类的成员函数 generateWeight():
int fruitClass::generateWeight(char fruitN, int& fruitW)
{
srand(time(NULL));
int weight = 0;
switch (fruitName)
{
case 'a':
weight = rand() % 500 + 100;
return fruitW = weight;
break;
case 'l':
weight = rand() % 400 + 300;
return fruitW = weight;
break;
case 'w':
weight = rand() % 1000 + 800;
return fruitW = weight;
break;
}
}
Output:
128 128 128 128
但它始终生成相同的数字,即使我使用不同的函数来调用它:
for (int i = 0; i < Basket.getWatermelonNum(); i++)
{
watermelonWeights[i] = Fruit.generateWeight(fruit, fruitWeight);
cout << watermelonWeights[i] << " ";
}
Output:
128 128 128
如你所见,我做了种子 srand()。 此外,还包括头文件和。 怎么回事?
【问题讨论】:
-
在循环中使用
srand()可能不好,在这种情况下它是错误的。 -
虽然这里并不关键,但值得注意的是 rand() 并不是一个特别好的伪随机数生成器。看看 std::mt19937 之类的东西
标签: c++