Python随机随机

时间:2013-01-12 02:38:31

标签: python random

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

3 个答案:

答案 0 :(得分: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)
    # ...

答案 1 :(得分:1)

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

value = 1000
for x in xrange(10):
    value = random.randrange(value)
    print value

答案 2 :(得分: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