作者poototo (poototo)
标题Re: [问题] 样本排列组合的问题
时间Sun Jan 19 02:13:18 2020
若只是在需要时,能随机提供其中一种排列可能,就O(n)而已
这样教授可以接受吗?
底下是leetcode的题目
---------------------------------------
import math
#
def getPermutation(n, k):
raw = [i for i in range(1, n + 1)]
ans = []
#
batch = 1
for i in range(1, n + 1):
batch *= i
#
for i in range(1, n + 1):
batch /= (n - (i - 1))
pos = math.ceil(k / batch) - 1
ans.append(raw[pos])
del raw[pos]
#
k -= batch * (k // batch)
#
print(ans)
#
getPermutation(21, 16673)
※ 引述《GoGoApo (Apo)》之铭言:
: 各位前辈好
: 小弟我目前手上有21个样点资料,需要做不同的排列组合来尝试他最终结果,这样就有21
: !种可能。
: 目前是以itertools.pertutations来做,可是光是产生出所有组合电脑就不太能负荷
: 想请问有没有其他方法可以使用?
: 或是该怎麽写才能让他不会当机
: 目前是Jupyter notebook只要再开同个档案他就会当机
: 请各位前辈指教了
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.193.43.58 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1579371201.A.DC3.html
1F:→ ddavid: 原Po问题也没讲清楚,不过怎麽看也不可能是这样 01/19 04:39
2F:→ GoGoApo: 谢谢前辈还愿意回答我的问题,但教授不是要求这样。 01/19 08:05
3F:→ GoGoApo: 回D大:目前我遇到的困难是有21个样点要分成五组,前四 01/19 08:05
4F:→ GoGoApo: 组各四个样点,第五组五个样点,每一组代表一年的调查资 01/19 08:05
5F:→ GoGoApo: 料,然後每一年都要进行一次预测。教授想知道各种排列组 01/19 08:05
6F:→ GoGoApo: 合对预测的影响有多大,所以一开始要我不管排序直接用21 01/19 08:05
7F:→ GoGoApo: !下去看所有组合,後来讨论过後就变成考虑排序,但还是 01/19 08:05
8F:→ GoGoApo: 有约一兆多种组合,目前是改用itertools.combinations来 01/19 08:05
9F:→ GoGoApo: 让他产生每五年的为一期的样点序列这样子。 01/19 08:05
10F:推 ddavid: 如果只是想知道不同排列组合对於预测的影响,则可以用随机 01/20 23:14
11F:→ ddavid: 的方式在时间容许范围内跑足够多组合,观察其变化程度就可 01/20 23:15
12F:→ ddavid: 做一个基本的估计了,没有必要非得把每一组都跑完 01/20 23:15
13F:→ ddavid: 你只要跟你的教授说,就算我现在跑完了所有的排列组合,那 01/20 23:16
14F:→ ddavid: 万一我又多了一组资料,是否又得全部重跑所有排列组合得出 01/20 23:16
15F:→ ddavid: 最佳的那一组?这样只会导致方法完全没有泛用与实用性,每 01/20 23:17
16F:→ ddavid: 次碰到新资料就要全部重跑巨量次数的方法绝对不会是理想的 01/20 23:18
17F:→ ddavid: 方法 01/20 23:18
18F:推 ddavid: 而且严格说来这要求看起来我也没有觉得很合理,如果样本点 01/20 23:22
19F:→ ddavid: 原本就具有时间顺序,怎麽可以随便乱搬动到哪一年去然後才 01/20 23:22
20F:→ ddavid: 来看怎麽凑结果比较好 01/20 23:23
21F:→ ddavid: 这就好像我在凑一组让我方法最好的资料搭配一样,其实已经 01/20 23:23
22F:→ ddavid: 近似在造假资料了 01/20 23:23
23F:→ ddavid: 当然这是只从你这边的简单说明,以我的背景知识的感想而已 01/20 23:24
24F:→ ddavid: ,有可能实际上不是这样,只是我对问题还没真正清楚 01/20 23:25