一端具有优先级的随机算法
Random algorithm with priority to one end
我正在用C++和Qt编写一个带有GUI的小程序。它应该类似于词汇训练器。我会把它用于我自己的学习。
我有一个对象的QList(例如字符串形式的名称和描述)。
然后我有了第二个包含int的QList。对于另一个列表中的每个对象,int都在这个列表中。每个对象的起始值为50;如果用户点击正确,它就会递减,反之亦然。因此,值为70的对象应该比值为30的对象更频繁地显示给用户。因此,在正确答案的方法中,我增加/减少它,对QList进行排序,并使用我的随机算法:
if(packList.count()==0) // the QList with objects
return;
int Min = 0;
int Max = packList.count()-1; // -1 because i need the index
qsrand(QTime::currentTime().msec());
if (Min > Max)
{
int Temp = Min;
Min = Max;
Max = Temp;
}
int randNum = ((rand()%(Max-Min+1))+Min);
setPage(randNum); // randNum will be used as index in this method
现在我需要的是一种在这个随机算法中实现优先级的方法。我不希望那些值更高的出现在90%的时间里,而是更频繁地出现,就像词汇培训师一样。
首先要注意:在程序开始时只应使用qsrand一次。
现在使用您的算法:首先获得所有值的总和,让我们称之为sumValues,然后计算0和sumValues-1之间的随机数。浏览您的列表,将值求和到变量currentSum中,直到它大于或等于您的随机数,然后使用该条目的索引。如果您通过递减值对列表进行排序,这将更有效率。
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 为什么 Serial.println(<char[]>);返回随机字符?
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 字符串-C++后显示的随机字符
- 基于ELO的团队匹配算法
- C++选择排序算法中的逻辑错误
- C 中的随机生成算法
- 实现随机生成数组的算法
- 非标准排序算法,用于随机独特整数
- 随机生成对象的算法
- 具有随机分量的算法的时间复杂度(吉莱斯皮算法)
- 用于选择随机子集的通用算法实现
- 就地随机选择算法
- 如何再现相同状态的随机算法
- 算法-统一随机元素链表
- 如何优化随机排序算法
- 随机生成一个能被N整除的数的最佳算法
- Random_shuffle算法-在没有随机生成器函数的情况下产生相同的结果
- 数学算法.随机
- 一端具有优先级的随机算法