【发布时间】:2021-03-13 17:53:13
【问题描述】:
我已经研究过可用的问题和答案,但没有一个真正适用于我的情况,所以就这样吧。
我正在使用 python 并尝试将数字 1800 分解为三个随机因子。我并不真正关心输出的格式。我可以使用一个元组、一个列表,甚至三个单独的变量数字。我也不担心让所有因素都受到同等重视。我的输出可能是 2,2,450 或 12,15,10 或其他任何值。
我最好的想法是使用素数分解 (2,2,2,3,3,5,5),创建三个随机子集,然后将每个子集中的项目相乘。我研究了多种方法,它们似乎都有一些问题。
ShuffleSplit 来自 scikitlearn 只会给我值的索引。所以我必须拆分,将值放入两个列表中,然后再次拆分并将值放入两个新列表中。这变成了很多行代码。
使用randint 可以让我找到素因数的子列表,将其放在一边,找到剩余素因数的另一个子列表,然后将每个列表相乘。这只是部分随机的,因为我必须确定要进入每个列表的因素数。
我可以使用itertools.permutations(或其他一些置换函数)生成一个随机排序的因子列表,然后手动将该列表分成三个列表。这与randint 方法具有相同的关注点,因为我必须指定在我的三个输出因子中的每一个中包含多少个小素因子。
列出所有可能的因素组合并随机选择一个在时间上并不可行。
用 Python 做这件事有什么好的(快速、简单和潜在可扩展的)方法?
【问题讨论】:
-
“列出所有可能的因素组合并随机选择一个在时间上是不可行的” - 为什么不呢?没有那么多。
标签: python factorization