1
innoink OP 不自己续个命,都沉的没影了
|
2
SoloCompany 2016-06-02 13:33:50 +08:00
如果 m>n 那么概率是 0
如果 m=n 那么只有一种排列(全排列)能满足要求 概率是很低的 n! / ((n-1)/n)^(n*k) 题目设定 m<n 和全排列是类似的 只不过是用 m * (m-1) * (m-2) … (m-n+1) * (m-n+1) … (m-n+1) 代替 n! 所以答案应该是 P(m,n) * (m-n+1) ^ (n*k - m) / ((n-1)/n)^(n*k) 吧? |
3
SoloCompany 2016-06-02 13:36:53 +08:00
更正一下
所有的 ((n-1)/n)^(n*k) 应该是 m ^ (n * k) 表示在 k 秒时间长度内,生成的数字序列的可能数量 |
4
innoink OP 推导过程真的不会╯▂╰我写了个模拟实验程序验证一下答案,当 m,n,k 分别是 7,4,10 的时候
P(7,4)*(7-4+1)^(4*10-7)/7^(4*10) =7*6*5*4*4^33/7^40 =30*4^34/7^39 这个几乎为 0 啊,实际模拟出来的大概是 19.5 |
5
innoink OP |
6
SoloCompany 2016-06-02 15:11:13 +08:00
首先前面有个数字是错的,结果应该是
7 * 6 * 5 * 4 * 4^36 / (7 ^ 40) 其次,我的答案应该也有问题,我的答案忽略了一个最大的前提条件,随机数是平均分布的 我计算的概率是忽略了平均分布这个前提条件 |
7
fcicq 2016-06-02 15:26:03 +08:00
好难啊, 需要分解事件.
首先"某个数字生成后的一秒内没有再次生成", 这一秒内掷的 n 个筛子有多少个无重复结果? 没有再次生成就是这些结果都不等于 n 次前的筛子点数. 运行了 k 秒就是以上过程重复 k * n 次, 但是有一个查看区间小于 n 的 intro 和最后的 outro. 水平不足, 算不到最后了. |
8
fcicq 2016-06-02 15:31:44 +08:00
感觉上用动态规划的话应该不算特别难解. 用 nCr nPr 的简单公式可能是没有的.
|
9
SoloCompany 2016-06-02 15:39:00 +08:00
@fcicq 事件数量不难计算啊,简单的排列组合就可以。困难的地方在于,怎么定义平均分布?如果有平均分布的概率,那么用之前计算的结果概率直接除一下平均分布的概率,应该就是楼主需要的概率了。书包已经丢掉了,不清楚平均分布的概率用什么公式得出
|
10
fcicq 2016-06-02 15:54:32 +08:00
@SoloCompany hmm... 这样一说可能有希望了. 不过还是没有出全力的意愿.
设 f(x) = P(m-1, x) / P(m, x) 难道是 f(1) + f(2) + f(3) ... + f(n) * A + f(n-1) + f(n-2) ... + f(1) 也就是 2 * sum(map(f, range(n)) + f(n) * A A 应该是 k * n - 2 * (n-1)? |
11
fcicq 2016-06-02 15:56:27 +08:00
range(n) 在 py 里从 0 开始, 无视细节吧 h
|
12
innoink OP |
13
SoloCompany 2016-06-02 20:36:35 +08:00
|
14
innoink OP @SoloCompany 问题是需要事件 A 的次数,不是概率啊
不过还是谢谢你 |