【问题标题】:Keeping track of random number and stopping loop跟踪随机数并停止循环
【发布时间】:2012-02-06 15:27:09
【问题描述】:

我无法弄清楚如何让我的程序跟踪我生成的随机数的总数,并在数字加起来达到特定值时让我的程序停止。

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 的总数(从表中选择的最小数字)加起来达到某个值时结束循环

【问题讨论】:

  • “数字加起来是一个特定的值”? “数我的随机数”?请选择两个终止条件之一并专注于它。可能需要两者都做,在这种情况下,请澄清。
  • 你可能不想import randomtimes次!
  • 谢谢,我正在选择一组随机数中的最小值。一旦这些随机数的总数 mn=10000,我需要我的循环停止运行。但是我仍然需要在每个循环中重新生成 mn
  • @kbob: mn 似乎是这些随机数的 min不是总数(又名总和)。
  • @kbob:请更新问题,以 (1) 正确格式化和 (2) 实际说明您的实际要求。请不要在您的问题中添加 cmets。请更新您的问题。

标签: python loops random


【解决方案1】:

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

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

【讨论】:

  • @kbob:这是第一个答案,你现在在做什么?!? (如果它解决了你的问题,你应该接受它!)
【解决方案2】:

根据我收集到的信息,您可能想尝试以下方法:

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)

关键见解:导入一次,明智地使用循环条件。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    相关资源
    最近更新 更多