refs #452, allow to pick random elements from collection

(will be used in view resizing)
This commit is contained in:
Klaus Basan
2015-09-23 15:17:44 +02:00
committed by Mathew Sutcliffe
parent 5718abe03c
commit ad1938b8d8
3 changed files with 40 additions and 1 deletions

View File

@@ -337,6 +337,23 @@ namespace BlackMisc
*/
void remove(const CCollection &other) { *this = CCollection(*this).difference(other); }
/*!
* \brief Return some random elements from container
* \param elements how many elements
*/
CCollection randomElements(int elements) const
{
if (this->isEmpty() || elements < 1) { return CCollection(); }
int high = this->size();
CCollection r;
for (int i = 0; i < elements; i++)
{
int randomIndex = qrand() % high;
r.push_back(*(this->begin()+ randomIndex));
}
return r;
}
/*!
* \brief Test for equality.
* \todo Improve inefficient implementation.