2013-12-22 2 views
4

Я инициировал список известной длины с нулями. Я пытаюсь вернуться через список и поставить случайные числа с плавающей запятой из 0-1 для каждого индекса. Для этого я использую цикл while. Однако код не помещает случайные числа. Список по-прежнему полон нулями, и я не понимаю, почему. Я вставил инструкцию печати, которая говорит мне, что список по-прежнему полон нулей. Буду признателен за любую помощь!создание списка случайных чисел в python

randomList = [0]*10 
index = 0 
while index < 10: 
    randomList[index] = random.random() 
    print("%d" %randomList[index]) 
    index = index + 1 

ответ

7

Список случайна:

>>> randomList 
[0.46044625854330556, 0.7259964854084655, 0.23337439854506958, 0.4510862027107614, 0.5306153865653811, 0.8419679084235715, 0.8742117729328253, 0.7634456118593921, 0.5953545552492302, 0.7763910850561638] 

Но вы печатаете это элементы, как itegers с "%d" % randomList[index], так что все эти значения округлены до нуля. Вы можете использовать "% F" форматировщик для печати чисел с плавающей точкой:

>>> print("%.5f" % randomList[index]) 
0.77639 

или '{:M:Nf}.format':

>>> print("{.5f}".format(randomList[index])) 
0.77639 
+0

Или просто 'печать (randomList [индекс])'. – user2357112

4

Почему вы не распечатывает список после while?

...code... 
print randomList 

Выход

[0.5785868632203361, 0.03329788023131364, 0.06280615346379081, 0.7074893002663134, 0.6546820474717583, 0.7524730378259739, 0.5036483948931614, 0.7896910268593569, 0.314145366294197, 0.1982694921993332] 

Если Yout хочет, чтобы ваше print заявления работы, использовать %f вместо этого.

1
import random 
from pprint import pprint 

l = [] 

for i in range(1,11): 
    l.append(int(random.random() * (i * random.randint(1,1e12)))) 

pprint(l) 
2

список понимание проще, быстрее:

randomList = [random.random() for _ in range(10)] 
Смежные вопросы