模拟实体类:
class Server
{
public String Ip_Port { get; set; }
public int weightip { get; set; }
public override string ToString()
{
Console.WriteLine($"Ip_Port={Ip_Port},weightip={weightip}");
return base.ToString();
}
}
模拟数据源:
List<Server> servers = new List<Server>
{
new Server
{
Ip_Port="asdas:1223",
weightip=2
},
new Server
{
Ip_Port="tegwer:154782",
weightip=1
},
new Server
{
Ip_Port="kjhvd:41201",
weightip=3
},
new Server
{
Ip_Port="errtqwe:412177",
weightip=9
},
new Server
{
Ip_Port="hjyhdf:7878",
weightip=7
}
};
主要代码:
int sum = 0;
var rand = new Random();
int num = rand.Next(1, servers.Select(t => t.weightip).Sum());
foreach (var item in servers)
{
sum += item.weightip;
if (num > sum)
continue;
Console.WriteLine(item.ToString());
break;
}
10次模拟结果:
int n = 0;
var rand = new Random();
while (n++<10)
{
int sum = 0;
int num = rand.Next(1, servers.Select(t => t.weightip).Sum());
foreach (var item in servers)
{
sum += item.weightip;
if (num > sum)
continue;
Console.WriteLine(item.ToString());
break;
}
}