gpt4 book ai didi

c++ - 一端优先的随机算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:50:33 24 4
gpt4 key购买 nike

我正在用 C++ 和 Qt 编写带有 GUI 的小程序。它应该类似于词汇训练器。我会用它来学习。

我有一个对象的 QList(例如名称和描述为字符串)。

然后我有第二个带有整数的 QList。对于我的其他列表中的每个对象,此列表中都有一个 int。每个对象的起始值为 50;如果用户点击正确,它会减少,反之亦然。因此,与值为 30 的对象相比,值为 70 的对象应该更频繁地向用户显示。因此,在正确答案方法中,我增加/减少它,对 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

现在我需要的是一种在这个随机算法中实现我的优先级的方法。我不希望值(value)更高的词在 90% 的时间里出现,而是更频繁地出现,就像词汇训练师一样。

最佳答案

首先要注意:您应该在程序开始时只使用一次 qsrand。

现在开始您的算法:首先获取所有值的总和,我们称之为 sumValues,然后计算 0 到 sumValues-1 之间的随机数。遍历您的列表并将值求和到变量 currentSum 中,直到它大于或等于您的随机数,然后使用此条目的索引。如果您按递减值对列表进行排序,这会更有效。

关于c++ - 一端优先的随机算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6509405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com