//根据当前数组获取随机数
public int GetRanDouble(Random ran,int incount,int inmoney,ref int minmoney,ref int maxmoney,ref List<int> outarray,int summoney)
{
int nowmoney=ran.Next(minmoney,maxmoney);
double sycount=incount-outarray.Count-1;
double symoney=inmoney-summoney-nowmoney;
if((symoney/sycount)<minmoney)
{
maxmoney=nowmoney-1;
return GetRanDouble(ran,incount,inmoney,ref minmoney,ref maxmoney,ref outarray,summoney);
}
else if((symoney/sycount)==minmoney)
{
outarray.Add(nowmoney);
int count=incount-outarray.Count;
for(int i=0;i<count;i++)
{
outarray.Add(minmoney);
}
return 0;
}
else if((symoney/sycount)>minmoney&&(symoney/sycount)<maxmoney)
{
return nowmoney;
}
else if((symoney/sycount)==maxmoney)
{
outarray.Add(nowmoney);
int count=incount-outarray.Count;
for(int i=0;i<count;i++)
{
outarray.Add(maxmoney);
}
return 0;
}
else
{
minmoney=nowmoney+1;
return GetRanDouble(ran,incount,inmoney,ref minmoney,ref maxmoney,ref outarray,summoney);
}
}
//生成随机数组
public List<int> GetList(int incount,double inmoney,double minmoney,double maxmoney)
{
List<int> outarray=new List<int>();
if(minmoney<0.01)
{
//
return outarray;
}
if(inmoney/incount<minmoney)
{
return outarray;
}
int summoney=0;
int nowinmoney=Convert.ToInt32(inmoney*100);
int nowmaxmoney=Convert.ToInt32(maxmoney*100);
int nowminmoney=Convert.ToInt32(minmoney*100);
Random ran=new Random();
for(int i=0;i<incount;i++)
{
if(i+1==incount)
{
outarray.Add(nowinmoney-summoney);
return outarray;
}
int now=GetRanDouble(ran,incount,nowinmoney,ref nowminmoney,ref nowmaxmoney,ref outarray,summoney);
if(now==0)
{
return outarray;
}
else
{
outarray.Add(now);
summoney+=now;
}
}
return outarray;
}