2012-02-06 85 views
-3

我很难弄清楚如何让我的程序跟踪随机数的总和,即时生成,并让我的程序停止时,数字合计到一个特定的值。跟踪随机数并停止循环

for x in range(0,times): 
###but maybe a while loop? 

    table=[0 for i in range (21)] 
    import random 
    for d1 in range(21): 
     if table1[d1]: 
      table[d1] = random.expovariate(gamma_val) 
     else: 
      table[d1] = random.expovariate(1/gamma_val) 

    mn= min(table) ####selects minimum value of table which i use in rest of program## 

###program goes on to do some biology thing### 

我想循环结束,一旦MN的总数(从表中选择的最小数字)加起来一定值

+3

“数字合计为特定值”? “算我的随机数”?请选择两种终止条件之一,并着重于此。这可能是必要的,在这种情况下,请澄清。 –

+0

你可能不想'输入任意次'次! – Johnsyweb

+0

谢谢,我正在选择一组随机数的最低值。一旦这些随机数的总和为mn = 10000,我需要我的循环停止运行。但我仍然需要在每个循环中新生成 – kbob

回答

1

我的水晶球告诉我,你想:

total = 0.0 
while total < 10000.0: 
    ... # your code 
    total += mn 
+0

谢谢!真棒! – kbob

+0

@kbob:这是第一个答案,你到底在做什么?!? *(如果它解决了你的问题,你应该接受它!)* –

0

从我收集到你可能想尝试这样的事:

import random 
table = [0.0 for i in xrange(0, 21)] 
while sum(table) < 10000.0: 
    for i in xrange(0, len(table)): 
     if table1[i] > 0: 
      table[i] = random.expovariate(gamma_val) 
     else: 
      table[i] = random.expovariate(1/gamma_val) 
mn = min(table) 

主要见解:进口ONC e,明智地使用循环条件。

我不知道你是否使用Python 2或Python 3,所以语法可能会有所不同。另外,如果你能更清楚地解释你的问题,你可能会收到更好的答案。