当前位置: 首页 > 知识库问答 >
问题:

把一个数随机地分解成三个因子

呼延博易
2023-03-14

我在python中工作,试图将数字1800分解成三个随机因子。我并不真正关心输出的格式。我可以使用一个元组,一个列表,甚至三个独立的变量数。我也不关心让所有的因素都得到同样的重视。我的输出可能是2,2450或12,15,10或其他任何东西。

我最好的想法是使用素数分解(2,2,2,3,3,5,5),创建三个随机子集,并将每个子集中的项相乘。我研究了多种方法,它们似乎都有一些问题。

来自scikitlearn的ShufflesPlit只会给我值的索引。所以我必须拆分,把值放到两个列表中,然后第二次拆分,把值放到两个新的列表中。这就变成了大量的代码行。

共有1个答案

邵兴怀
2023-03-14

我假设您已经编写了生成素数和因式分解的代码。如果没有,则web上的代码不到200行。

因此,您有一个素数列表,例如[2,2,2,3,3,5,5]

与其走你建议的路,我认为你最好使用随机抽样,因为它不能取代所用的数字。你知道第一个数可以和素因子的个数一样大,减去2(因为你必须再有两个数)。第二个数字将来自随机样本集,该随机样本集要么是1(如果只有两个剩余的数字,要么是1和剩余的数字之间的随机数减1(因为,同样,你必须至少再有一个数字来组成这三个数字)

import random

prime_factors = [2,2,2,3,3,5,5]

def rand_factors(lst):
    elem_for_first_factor = random.randint(1, len(prime_factors)-2)
    return [k for k in random.sample(prime_factors, elem_for_first_factor)]
 类似资料:
  • 问题内容: 我在这里有一些东西,但是我无法按照自己的喜好工作: 上面的位生成数字,但是它们可以相同。下面的代码可以解决此问题,但不能,但是似乎可以减少这种可能性: 很明显,它只是打印它们。 问题答案: 您可以用来从可迭代对象中获取任意数量的唯一“随机”项-无需使用嵌套循环:

  • 本文向大家介绍如何生成一个随机数?相关面试题,主要包含被问及如何生成一个随机数?时的应答技巧和注意事项,需要的朋友参考一下  

  • 问题内容: 我对Swift和编程逻辑很陌生,所以请耐心等待 如何在Swift中生成0到9之间的随机数而不重复最后生成的数字?因为相同的数字不会连续出现两次。 问题答案: 将先前生成的数字存储在变量中,然后将生成的数字与先前的数字进行比较。如果它们匹配,则生成一个新的随机数。重复生成新数字,直到它们不匹配为止。

  • 问题 你想要获得两个整数(包含在内)之间的一个随机整数。 解决方案 使用以下的函数。 randomInt = (lower, upper) -> [lower, upper] = [0, lower] unless upper? # 用一个参数调用 [lower, upper] = [upper, lower] if lower > upper #

  • 我写了一个程序,将数字分解为它的质因数,然后将它们存储在一个向量中,最后询问是否通过将它们相乘来验证结果。 它的工作方式是这样的:要求一个数字(代码中的),然后将其除以2及以上。 如果它找到一个模(当mod时)为零的数字(代码中的 ),则将该除数存储到一个向量中,并将其除以 ,然后将其存储到 中,然后将除数重置为1(而 循环中的最后一条语句将其递增为2)。如果没有找到这样的数字, 将增加,直到它大

  • 我正在从Python速成班上攻克太空入侵者游戏。我正在使用Python 3.5和Pygame 1.9。2a0,groupcollide() 在原作中,当子弹与宇宙飞船碰撞时,两个精灵都会从屏幕上移除。 在我的版本中,我希望删除对我来说更随机,以便不是所有的点击都成功。我使用随机模块完成了这项工作,如果随机数低于某个阈值(n),则使碰撞成功。我已经在下面的代码中使用了这个函数,但是它没有按照我想要的