擅长:python、mysql、java
<p>我认为这不是最好的方法,但可能会奏效:</p>
<pre><code>import random
data # list of 500 floats
n = 11 # numbers to pick
bottom_limit = X
top_limit = Y
max_tries = 100
data_min = min(data)
data_max = max(data)
i = 0
while i < max_tries:
i += 1
picked = []
for j in xrange(n-1): # pick random except the last one
picked.append(random.choice(data))
s = sum(picked)
if s + data_min < top_limit and s + data_max > bottom_limit:
# Ok, we know we can find proper values, let's do it
filtered = []
for value in data:
if value + s > bottom_limit and value + s < top_limit:
filtered.append()
picked.append(random.choice(filtered))
break # Success
else:
print 'Unable to pick, sorry'
</code></pre>
<p>成功率与数据和极限值高度相关。在</p>
<p>希望这有帮助。在</p>