62,046
社区成员
发帖
与我相关
我的任务
分享
int [] a = new int[4];
int count=0; //循环数值合
for (int i = 0; i < 4; i++)
{
int n = ran.Next(100, 300); // 100到300随机数
int j++; //循环次数
//如果总分减去 当前分后, 大于剩余次数乘以300 或 小于剩余次数乘以100, 则再以后次数循环中必会出现不再100到300之间的数据, 所以重新获取随机数。
if( ( 1000-n )/ j> 300*(4-j) || ( 1000-n )/ (4- j) < 100*(4-j) ){
//如果是当前取值过大, 则重新取随机
if( ( 1000-n )/ j> 300*(4-j) ) {
int big= ( 1000-n )/ j - 300*(4-j) //获取溢出部分
n = ran.Next(100, 300-big); // 100到300减去溢出部分的随机数
}
//如果是当前取值过小
if( ( 1000-n )/ (4- j) < 100*(4-j) ){
int small= ( 1000-n )/ (4- j) < 100*(4-j) //获取不足部分
n = ran.Next(100+small, 300); // 100加上不足部分到300的随机数
}
}
if(i==3){
n=1000-count;
} else{
count+= n; }
a[i]=n ;
}
int [] a = new int[4];
int count=0;
for (int i = 0; i < 4; i++)
{
int n = ran.Next(100, 300); // 100到300随机数
if( (count+n) >1000){
a[3]=1000-count ;
}
else{
a[i]=n;
}
count+=n;
}
//总积分
int sum = 1000;
//每天最小积分
int min = 100;
//每天最大积分
int max = 300;
//天数
int day = 4;
//求出每日平均值
int avgDay = sum / day;
int ranNumebr = 0;
//保证不超过最大值不小于最小值获得其中接近的区间进行随机
if (avgDay - min > max - avgDay)
{
ranNumebr = max - avgDay;
}
else
{
ranNumebr = avgDay - min;
}
Random ran = new Random();
int indexRanNumber = 0;
int[] arrayNumber = new int[day];
for (int i = 0; i < day / 2; i++)
{
//这个地方可以获取值后打乱或其他操作
indexRanNumber = ran.Next(0, ranNumebr);
//单数天为小于平均值的一个值
arrayNumber[i * 2] = avgDay - indexRanNumber;
//偶数天补齐前一天减少的值
arrayNumber[i * 2 + 1] = avgDay + indexRanNumber;
}
//如果天数为单数,最后一位补为平均值
if (day % 2 == 1)
{
arrayNumber[day] = avgDay;
}