我正在为棋盘游戏开发概率分析程序。作为算法的一部分*我需要计算一个数字的分区的可能排列(加上一些填充),以便所有分区组件不能占据任何低于排列总长度的位置,以数字为单位,减去值的组件。
(然而,被分割的数字极不可能超过 8,并且排列的长度永远不会超过 7。)
例如,假设我有 4 的分区,“211”,我想在填充为 2 时找到排列,即长度为 5:
0 1 2 3 4 (array indexes)
5 4 3 2 1 (maximum value of partition component that can be allocated to each index)
2 1 1 _ _ (the partition plus 2 empty indexes)
这表示为像这样的数组 {2,1,1,0,0}
当 2 在 0 索引中时有 6 个排列(4!/2!2!),并且 2 可以占用 4 个索引(2 不能放在最后一个索引中)所以这种情况下总共有 24 个排列( a 1 可以占用任何索引)。
输入“21100”的输出:
21100、21010、21001、20110、20101、20011
02110、02101、02011、12100、12010、12001
00211、10210、11200、10201、01210、01201
10021、01021、00121、11020、10120 01120
请注意,这只是“21100”的所有排列减去 2 在第 4 个索引中的排列的集合。这是一个比较简单的案例。
该问题可以描述为组合n个不同的排列组,因为上述情况可以表示为x=1 n=4和x=2 n=5的排列组合,其中x是值计数,n是“空间”计数。
我的困难是制定一种可以通过计算获得所有可能性的方法,任何建议都将不胜感激。-请原谅我的问题中的术语混乱。
*算法回答以下问题:
有一组n 个单位被攻击k次。每次攻击都有p次失败的机会和q (1 - p ) 次攻击组中的一个随机单位的机会。第二次损坏的单位将被摧毁并从集合中移除。
攻击后有x 个未损坏单位、y个损坏单位和z个被摧毁单位的概率是 多少?
如果有人知道解决此问题的更直接方法,请告诉我。