اون روش که قبلا گذاشتم و حذف کردم کاملا رندوم نمی داد اما فکر کنم این یکی دیگه رندوم باشه اگه اشکال داشت تذکر بدید
در ضمن تابعی که fmehrvarzi عزیز گذاشتند را امتحان کردم فکر کنم رندوم نباشه یه بار هم خودتون چند بار تست کنید تا مطمئن بشید
int[] RandSum2 (int from1,int to1,int count1,int sum1)
{
to1-=from1;
sum1-=count1*from1;
int sum2=0,ran,mx=to1+1;
Random rr = new Random();
int[] RandArray = new int[count1];
while (mx>to1) {
mx=from1;
do
{
ran=rr.Next(1,Math.Min(to1,sum1-sum2+1));
mx=Math.Max(mx,RandArray[rr.Next(count1)]+=ran);
sum2+=ran;
} while(sum2<sum1);
RandArray=RandArray.Select(x => (int)Math.Round((double)x/mx*(Math.Min(mx,to1)))).ToArray();
sum2=RandArray.Sum();
}
RandArray=RandArray.Select(x => x+from1).ToArray();
return RandArray;
}
واسه انتخاب ده تا عدد که بین 1 تا 7 باشند و جمعشون بشه 50 این دستورشه
int[] myarr=RandSum2(1,7,10,50);