-1
if Airplane==1:
 while icounter<4:
    ifuelliter=random.randrange(1,152621)
    #litter/kilometer
    LpK=152620/13500
    km=LpK*ifuelliter


    ipca=random.randrange(0,50)
    ipcb=random.randrange(0,50)
    ipcc=random.randrange(0,812)







    #3D space distance calculation
    idstance= math.sqrt((icba-ipca)**2 + (icbb-ipcb)**2 + (icbc-ipcc)**2)

    totaldist=km-idstance

    if totaldist>0:
          print "You have enoph fuel to get to New York AirPort"
          print ipca1,ipcb2,ipcc3
          icounter=3

    if totaldist<=0:

         print "You dont have enoph fuel to get to New York AirPort please go to the nearest one or you will die"
         print ipca,ipcb,ipcc
         icounter=icounter+1`

我怎样才能做到这一点

ipca=random.randrange(0,50)
ipcb=random.randrange(0,50)
ipcc=random.randrange(0,812)

每次随机数都会循环下去,而不是每次其他数字。例如:没有:

812
512
321
815
600
700

是的:

800
600
550
320
50
1
4

3 回答 3

2

如果您希望随机数减少,但仍希望它们均匀分布,则确实需要预先生成所有值,然后按降序对它们进行排序:

xs = [random.randrange(0, 50) for _ in range(4)]
xs.sort(reverse=True)

以下是对所有三个随机值执行此操作的方法,用于zip从每个列表中获取一个值:

a_list = [random.randrange(0, 50) for _ in range(4)]
b_list = [random.randrange(0, 50) for _ in range(4)]
c_list = [random.randrange(0, 812) for _ in range(4)]

a_list.sort(reverse=True)
b_list.sort(reverse=True)
c_list.sort(reverse=True)

for ipca, ipcb, ipcc in zip(a_list, b_list, c_list):
    distance = math.sqrt(ipca*ipca + ipcb*ipcb + ipcc*ipcc)
    # ...
于 2013-01-12T02:47:13.867 回答
1

您已经控制了最大值,只需传入最后一个值即可获得小于该值的新值。

value = 1000
for x in xrange(10):
    value = random.randrange(value)
    print value
于 2013-01-12T04:52:09.910 回答
0

您可以考虑之前的随机数:

number = random.randrange(0, 850)

while icounter < 4:
    if number == 0:
        print 'Number is zero'
        break

     number = random.randrange(0, number)

如果你需要一个统一的分布,你必须使用这样的东西:

def random_numbers(n=6, minimum=0, maximum=850):
    numbers = [random.randrange(minimum, maximum) for i in xrange(n)]
    numbers.sort(reverse=True)

    return numbers
于 2013-01-12T02:40:40.247 回答