老师出的题目,看不懂——
要求:
1。从1-50[定义为N,全局赋值]中随机选取10[定义为M,全局赋值]个数字,把取得的10个随机数存入一个数组。2。从10[定义为I,全局赋值]次的1。结果得到的数组中统计1-50之间每个数字出现的次数,将所有数字的概率列出来。3。对数组进行优化,要求只要是1。中的上一次结果出现的数字在本次结果中均不出现。4。对数组优化,要求是如果在1。中的上一次结果出现3个以上数字相连的话则只能从这几个相连数字的两头取值,[如果相连数字是从1-3之间开始则取大于1-3的;同理,反之则取小于47-50的]5555555555,搞不明白了,老师还说在全班41人中只能每3个人的程序相同或者相似,发现多于4个则平时成绩均计做60!!求助阿求助阿!!

解决方案 »

  1.   

    const
      N = 50;
      M = 10;
      I = 10;
    var
      aN: array[1..N,1..2] of integer;
      aI: array[1..I,1..M] of integer;
      tmpi, tmpj, temp: integer;
    begin
      Randomize;  //原始数组初始化
      for tmpi := 1 to N do
      begin
        aN[tmpi,1] := tmpi;
        aN[tmpi,2] := 0;
      end;
      
      //I次循环,每次随机取M个数字
      for tmpi := 1 to I do
      begin
        for tmpj := 1 to M do
        begin
          temp := Random(N) + 1;
          aI[tmpi,tmpj] := aN[temp,1];
          aN[temp,2] := aN[temp,2] + 1;
        end;
      end;
      
    end;其他的你自己参考实现吧!我想说的是,这个问题不太简单。就如第3个问题,本次10个随机数取了出来(可以有重复),下次再随机取10个数字的时候要排除前次那10个随机数(重复的数字算1个数字),而本次随机取的10个数字也可以重复。呵呵,不知道我分析的对不对?楼主有什么意见?
      

  2.   

    恩,每个要求是一个小题目。后面的基本上就是逐步变难[我这么人为的,可能是高手们觉得太容易不屑于理会吧。]。我认为4是很复杂的,我也问过老师,他大概的意思是:在第4小问题中如果i-1次中有5678序列,则在i次中,就只能取1-4和9-50中的随机数字,5-8中是不能取的。第3小问题的意思是说在i-1次取到的数组在第i次中是不能一样的,里面没有顺序排列的问题,而且是说所有在i-1次中取到的数组里的任意一个数字都不能在第i次的数组中出现。