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
答案 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