//根据当前数组获取随机数 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; }