nfwh 发表于 2013-9-22 21:13

用Mathematica如何生成这类随机矩阵?求老师解答!

本帖最后由 nfwh 于 2013-9-23 18:32 编辑

Mathematica如何生成这类随机矩阵?
例如生成一个2行随机矩阵:
     1,1,1,2,2,3,3,3,3,4,4,4,4,4,5,5,5
     2,3,9,3,4,9,5,4,6,5,6,7,9,8,6,8,9
要求说明:
    1、第一行由1至5的连续数组成,第一行每个数原地随机重复次数区间为(2,5);
    2、第二行由2至9的连续数组成,第二行每个数随机出现的次数区间为(1,4);
    3、每个列中第二个元素大于第一个元素;   
    4、任何两个列不能完全一样,如不能出现下面相等的列:                                                        
                                          2,2
                                          4,4
谢谢!

算法参考:
     a,先生成第一行s1:
                           s1={{1,1,1},{2,2},{3,3,3,3},{4,4,4,4,4},{5,5,5}}
     b,再生成一个预备表s2,其中s2最小者可以比s1最小者大1,若s2个数太多可以把尾部数删除一些以保持与s1的个数相等:
                          s2={2,3,3,4,4,5,5,6,6,6,7,8,8,9,9,9,9}
    c, 现在可以从s2中随机抽取若干个数来生成第二行:
    例如:s1中的小组{1,1,1}中有3个元素,因此首先从s2中随机抽取3个互不相等且大于1的数作为{1,1,1}所对应的第二行,
    s2中被抽取什么数就减少什么数。
                           {1,1,1}
                           {2,3,9}
          其余类推,直到s2中的数被抽完为止。
谢谢!
页: [1]
查看完整版本: 用Mathematica如何生成这类随机矩阵?求老师解答!