解决方案 »

  1.   

    好像是三七分呀,总数设为X,A得到的苹果数为a,B得到的苹果数为b
    则a=Math.Round(X*0.7);  ///四舍五入
    b=Math.Round(X*0.3);
    这里有个特殊情况,就是凡事5的倍数,不是2的倍数,用四舍五入就不合适了,比如X=15,a得到的苹果数是10.5,四舍五入是11;b得到的苹果是4.5,四舍五入是5.a+b却是15,所以在编程的时候应该考虑能被5整除的单数。
    if(X%5==0 && X%2==0)  //10的倍数不影响结果
    {
      a=Math.Round(X*0.7);  ///四舍五入
      b=Math.Round(X*0.3);
    }
    else  //能被5整除的单数
    {
      a=Math.Round(X*0.7);  
      b=Math.Round(X*0.3)-1; //-1的目的是为了平衡总数,a-1也行,根据自己的喜好。
    }
      

  2.   

    如果是根据系数求数量,那么这就是小学数学了
    a = 总数 * 系数a /(系数a+系数b)
    b = 总数 * 系数b /(系数a+系数b)
      

  3.   

    这个题目是什么意思? 10个苹果  A系数是7就分配7个  B 系数3 就分配三个?
    我理解为:public void AppDistribution(int app,int Aquotient,int Bquotient,ref AGetApp,ref BGetApp)
    {
           int Apercent=Aquotient/(Aquotient+Bquotient);
            int Apercent=Bquotient/(Aquotient+Bquotient);
            AGetApp=app*Apercent;
            BGetApp=app*Bpercent;
    }
    是不是我理解问题。
      

  4.   

    这个算法是不是要你传入一个系数啊。不然怎么自动分配啊。
    系数A 系数B 总数CA的数量=C*A%
    B的数量=C-A
    哈哈 小数题
      

  5.   

    权值问题而已。。
    设定总权值,
    比如你的A权值为int a;B的权值为int b
    总权值就是int weight= a+b;
    Random rd = new Random();
    int tmp=rd.Next(weight);
    if(tmp<a)
    {
       //分配给A
    }
    else
    {
      //分配给B
    }这个写法适用于一个个随机分的时候,可能会出现实际分配到的数量跟权值系数有偏差的情况,但这个可以做算法修正,也可以认为在概率上是对的
    如果是要一次性按比例分配,也是很简单的事情假定苹果数量 int appleNums=1000000;
    A权值  int a=7;
    B的权值 int b=3;int appleForA= appleNums*a/(a+b);//此部分可以对无法整除的苹果进行修正
    int appleForB = appleNums - appleForA;如果要考扩展性的话,那就更复杂了。嘿嘿
      

  6.   

    “合理”的意思是误差最小吧。void apple( int total_num, double coeff_a, double coeff_b )
    {
        double ratio_a = coeff_a/(coeff_a+coeff_b);
        double ratio_b = 1 - ratio_a;    double app_a = total*ratio_a;
        double app_b = total*ratio_b;    int apple_a = app_a;
        int apple_b = app_b;    if( app_a - apple_a < 0.5 )
            apple_a++;   // 获得的最终数目的苹果
        else
            apple_b++;  // 获得的最终数目的苹果
    }
      

  7.   

    数量a = 总数 * 系数a /(系数a+系数b)
    数量b = 总数 * 系数b /(系数a+系数b) 如果数量a和b必须是整数的话,就分别按你的方法是计算下到底是向上取整还是向下取整比较合理。
      

  8.   

    二楼写的就是小学生思想。还什么5的倍数...
    如果就是按照权值分配,那就相当于除法,只不过会有小数。
    两个结果的小数部分相比较,大的往上取1,小的向下取0就可以。至于相等的情况,可以考虑权值大的向上取,当然,这只是一种策略而已。
    你是大学生思想?我看你是脑袋被驴踢了,没看到苹果总数是未知的么,你怎么知道什么时候改向上取整,什么时候该向下取整?别跟我说用if判断啊,你怎么判断?除了用round()函数,你还有什么方法?既然用到round()函数,当然要考虑到所有情况。不会解答,别JB瞎扯淡!按照你的方法,你倒是把你的代码贴出来,还有脸说策略,策略谁不会呀!关键得实现出来。你说的那些到最后没法实现,还不跟放屁一样!
      

  9.   


    还误差最小呢,难道没看出来你那经过下面两句的赋值以后,
    apple_a = app_a;
    apple_b = app_b;
    apple_a和app_a,apple_b和app_b是永远相等的,你最后来一个if...else判断是干嘛用的?
    永远执行apple_a++;  也就是说a的苹果总是多一个。
      

  10.   


    还误差最小呢,难道没看出来你那经过下面两句的赋值以后,
    apple_a = app_a;
    apple_b = app_b;
    apple_a和app_a,apple_b和app_b是永远相等的,你最后来一个if...else判断是干嘛用的?
    永远执行apple_a++;  也就是说a的苹果总是多一个。
    这个,我用的C语言,实型给整型赋值的时候,应该是会把小数部分舍去的。我是这个意思。
      

  11.   

    二楼写的就是小学生思想。还什么5的倍数...
    如果就是按照权值分配,那就相当于除法,只不过会有小数。
    两个结果的小数部分相比较,大的往上取1,小的向下取0就可以。至于相等的情况,可以考虑权值大的向上取,当然,这只是一种策略而已。
    你是大学生思想?我看你是脑袋被驴踢了,没看到苹果总数是未知的么,你怎么知道什么时候改向上取整,什么时候该向下取整?别跟我说用if判断啊,你怎么判断?除了用round()函数,你还有什么方法?既然用到round()函数,当然要考虑到所有情况。不会解答,别JB瞎扯淡!按照你的方法,你倒是把你的代码贴出来,还有脸说策略,策略谁不会呀!关键得实现出来。你说的那些到最后没法实现,还不跟放屁一样!
    你连我说的方法看都看不明白,没什么讨论价值。呵呵。
      

  12.   

    二楼写的就是小学生思想。还什么5的倍数...
    如果就是按照权值分配,那就相当于除法,只不过会有小数。
    两个结果的小数部分相比较,大的往上取1,小的向下取0就可以。至于相等的情况,可以考虑权值大的向上取,当然,这只是一种策略而已。
    你是大学生思想?我看你是脑袋被驴踢了,没看到苹果总数是未知的么,你怎么知道什么时候改向上取整,什么时候该向下取整?别跟我说用if判断啊,你怎么判断?除了用round()函数,你还有什么方法?既然用到round()函数,当然要考虑到所有情况。不会解答,别JB瞎扯淡!按照你的方法,你倒是把你的代码贴出来,还有脸说策略,策略谁不会呀!关键得实现出来。你说的那些到最后没法实现,还不跟放屁一样!
    你连我说的方法看都看不明白,没什么讨论价值。呵呵。真不知道一群人为什么能为一个不是题目的题目还研究个半天。
      

  13.   

    二楼写的就是小学生思想。还什么5的倍数...
    如果就是按照权值分配,那就相当于除法,只不过会有小数。
    两个结果的小数部分相比较,大的往上取1,小的向下取0就可以。至于相等的情况,可以考虑权值大的向上取,当然,这只是一种策略而已。
    你是大学生思想?我看你是脑袋被驴踢了,没看到苹果总数是未知的么,你怎么知道什么时候改向上取整,什么时候该向下取整?别跟我说用if判断啊,你怎么判断?除了用round()函数,你还有什么方法?既然用到round()函数,当然要考虑到所有情况。不会解答,别JB瞎扯淡!按照你的方法,你倒是把你的代码贴出来,还有脸说策略,策略谁不会呀!关键得实现出来。你说的那些到最后没法实现,还不跟放屁一样!
    你连我说的方法看都看不明白,没什么讨论价值。呵呵。真不知道一群人为什么能为一个不是题目的题目还研究个半天。
    因为好多人发现终于一个自己看起来会的题目了。所以舍不得放过...
      

  14.   


    还误差最小呢,难道没看出来你那经过下面两句的赋值以后,
    apple_a = app_a;
    apple_b = app_b;
    apple_a和app_a,apple_b和app_b是永远相等的,你最后来一个if...else判断是干嘛用的?
    永远执行apple_a++;  也就是说a的苹果总是多一个。
    这个,我用的C语言,实型给整型赋值的时候,应该是会把小数部分舍去的。我是这个意思。
    实际上是行不通的,赋值是赋值,类型转换是类型转换,二者不能混谈,不是赋值就顺便把类型也转换了,要不然还要强制类型转换干吗?
      

  15.   

    二楼写的就是小学生思想。还什么5的倍数...
    如果就是按照权值分配,那就相当于除法,只不过会有小数。
    两个结果的小数部分相比较,大的往上取1,小的向下取0就可以。至于相等的情况,可以考虑权值大的向上取,当然,这只是一种策略而已。
    你是大学生思想?我看你是脑袋被驴踢了,没看到苹果总数是未知的么,你怎么知道什么时候改向上取整,什么时候该向下取整?别跟我说用if判断啊,你怎么判断?除了用round()函数,你还有什么方法?既然用到round()函数,当然要考虑到所有情况。不会解答,别JB瞎扯淡!按照你的方法,你倒是把你的代码贴出来,还有脸说策略,策略谁不会呀!关键得实现出来。你说的那些到最后没法实现,还不跟放屁一样!
    你连我说的方法看都看不明白,没什么讨论价值。呵呵。真不知道一群人为什么能为一个不是题目的题目还研究个半天。算了,不是一个世界的人,没法交流。