本帖最后由 ggggwhw 于 2010-3-24 13:59 编辑
有5个不同人,要从其中选出3个参加比赛,不同的选法有哪些?
转化成数学描述就是,从集合{1,2,3,4,5},从中任意取出3个数字组成新的集合,该集合可以有哪些不同情况?这是一个组合的问题,下面是我实现的代码:- In[1]:= arr = Table[j, {j, 1, 5}];
- brr = Tuples[arr, 3];
- crr = Select[brr, #[[1]] < #[[2]] < #[[3]] &]
- Length@crr
- Out[3]= {{1, 2, 3}, {1, 2, 4}, {1, 2, 5}, {1, 3, 4}, {1, 3, 5}, {1,
- 4, 5}, {2, 3, 4}, {2, 3, 5}, {2, 4, 5}, {3, 4, 5}}
- Out[4]= 10
复制代码 如果考虑参赛顺序的话,就成了排列的问题了:- In[5]:= arr = Table[j, {j, 1, 5}];
- brr = Tuples[arr, 3];
- crr = Select[brr, #[[1]] != #[[2]] != #[[3]] &]
- Length@crr
- Out[7]= {{1, 2, 3}, {1, 2, 4}, {1, 2, 5}, {1, 3, 2}, {1, 3, 4}, {1,
- 3, 5}, {1, 4, 2}, {1, 4, 3}, {1, 4, 5}, {1, 5, 2}, {1, 5, 3}, {1, 5,
- 4}, {2, 1, 3}, {2, 1, 4}, {2, 1, 5}, {2, 3, 1}, {2, 3, 4}, {2, 3,
- 5}, {2, 4, 1}, {2, 4, 3}, {2, 4, 5}, {2, 5, 1}, {2, 5, 3}, {2, 5,
- 4}, {3, 1, 2}, {3, 1, 4}, {3, 1, 5}, {3, 2, 1}, {3, 2, 4}, {3, 2,
- 5}, {3, 4, 1}, {3, 4, 2}, {3, 4, 5}, {3, 5, 1}, {3, 5, 2}, {3, 5,
- 4}, {4, 1, 2}, {4, 1, 3}, {4, 1, 5}, {4, 2, 1}, {4, 2, 3}, {4, 2,
- 5}, {4, 3, 1}, {4, 3, 2}, {4, 3, 5}, {4, 5, 1}, {4, 5, 2}, {4, 5,
- 3}, {5, 1, 2}, {5, 1, 3}, {5, 1, 4}, {5, 2, 1}, {5, 2, 3}, {5, 2,
- 4}, {5, 3, 1}, {5, 3, 2}, {5, 3, 4}, {5, 4, 1}, {5, 4, 2}, {5, 4, 3}}
- Out[8]= 60
复制代码 问题是Mathematica 有没有现成的函数可以实现类似的两种结果呢? |