c03xp 发表于 2020-9-22 14:46

求解10000个随机数分成两组,使它们的和相等

求解10000个随机数分成两组,使它们的和相等,怎么编写程序
import random

a = []
max = 10**8

for i in range(10000):
    x = random.randint(0,max)
    while x in a:
      x = random.randint(0,max)
    a.append(x)

padastar 发表于 2020-9-22 14:53

我觉得理论上可能存在 ,实际上不存在这个问题的答案

空想昼夜 发表于 2020-9-22 14:59

全都是随机的话不太能保证存在解吧, 举极端情况来说可以随机出9999个极小值和1个极大值, 此时不存在任何可行解吧.

padastar 发表于 2020-9-22 15:00

我可以交流一下我对这个问题的看法;
1.取10000个随机数的和的一半(若为偶数可能有解,奇数或者带小数无解)
2.从10000个数取5000个数全部排列组合,并且一 一验证
3.可能无解 也可能多解决
但这个算力我觉得要求不较大吧

c03xp 发表于 2020-9-22 15:02

padastar 发表于 2020-9-22 14:53
我觉得理论上可能存在 ,实际上不存在这个问题的答案

这个要看随机数是什么吧,还是有很大机会有解的

莫名堂 发表于 2020-9-22 15:04

你这感觉是在做无用功啊。这种随机数很难保证你想要的要求的

padastar 发表于 2020-9-22 15:06

c03xp 发表于 2020-9-22 15:02
这个要看随机数是什么吧,还是有很大机会有解的

所以我很严谨的说理论上可能存在解,但实际上,我个人觉得 暴力穷举不现实。期待有大神有好办法

sos218909 发表于 2020-9-22 15:13

题目换一下
10000个随机整数,分两组,和相等,几率多大?

c03xp 发表于 2020-9-22 15:14

padastar 发表于 2020-9-22 15:06
所以我很严谨的说理论上可能存在解,但实际上,我个人觉得 暴力穷举不现实。期待有大神有好办法

看来只能穷举了,那要到猴年马月才能计算出来

c03xp 发表于 2020-9-22 15:17

sos218909 发表于 2020-9-22 15:13
题目换一下
10000个随机整数,分两组,和相等,几率多大?

感觉换了题目更难了
页: [1] 2 3
查看完整版本: 求解10000个随机数分成两组,使它们的和相等