抽中一张橙卡

抽中一张橙卡

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*
从N个元素里面随机一个出来,每个的概率不同
*/
template<class T>
bool RandomOne(const std::vector<T>& v, T& result)
{
if(v.empty()) return false;

int32_t total_weight = 0;
size_t idx = 0;
for(size_t i = 0; i < v.size(); ++i)
{
total_weight += v[i].weight;
double rand = NumberHelper::Random01();
if(rand * total_weight < v[i].weight)
{
idx = i;
}
}

result = v[idx];
return true;
}

-->