现在有一组数字,是1到80,请在此数组中随机取出10个不能重复的数字,这10个数字相加的和在250~300之间,请写一个程序抽取这10个随机数字

解决方案 »

  1.   

    #include "time.h"
    #include "stdlib.h"
    main()
    {
    time_t t;
    int sum = 0;
    bool flag = true;
    srand((unsigned)time(&t));
    while(flag)
    {
    for(int i=0;i<10;i++)
    {
    sum += rand()%80;
    }
    if(sum>=250 && sum<=300)
    {
    cout<<sum<<endl;
    flag = false;
    }
    }
    }
      

  2.   

    i. 提供以下代码
    ii. Random objRand = new Random();
    iii. objRand.Next(int minValue,int maxValue);
    如果按这种代码格式,如何做呢,哪种更好呢?
      

  3.   


    Random r = new Random();
            int[] nums = new int[10];
            int [] numbers = new int[80];//维数可改        private void displayNum()
            { 
                int total = 0;
                for (int i = 1; i <= numbers.Length; i++)
                {
                    numbers[i - 1] = i;
                }
               int j=0;
               //控制外层循环
               while(j<10)
                {
                   int randNum = r.Next(numbers.Length);
                   //内层循环判断
                        for (int ii = 0; ii < nums.Length; ++ii)
                        {
                            if (nums[ii] !=numbers[randNum])
                            {
                                nums[j] = randNum;
                                //叠加
                                total += nums[j];
                            }
                        }
                   ++j;
                }
               if (total > 300 || total < 250)
               {
                   //重新生成
                   displayNum();
               }