Scenario: There are N partners, each partner has a certain weight, according to the weight randomly select a partner
typedef struct
{
String k;//partner_id
String V;//value
String M;//0:number 1:ratio
}bookpartner_count_listinfo;
String Getrandnumratio (vector<bookpartner_count_listinfo> arpartner_count_list)
{
int weight = 0;
int user = 0;
Bookpartner_count_listinfo bp_cunt_list_temp[128];
for (Vector<bookpartner_count_listinfo>::iterator it = Arpartner_count_list.begin (); it < Arpartner_count_ List.end (); it++)
{
Weight + = Atoi (It->v.c_str ());
for (int i = 0; i < atoi (It->v.c_str ()); i++)
{
* (bp_cunt_list_temp + weight-i) = *it;
}
}
struct Timeval TV;
Gettimeofday (&TV, NULL);
Srand (TV.TV_USEC);
user = rand ()% weight;
Bookpartner_count_listinfo bk_pcl_temp = Bp_cunt_list_temp[user];
return BK_PCL_TEMP.K;
}
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
Weighted stochastic algorithm