2013-12-22 2 views
4

알려진 길이의 목록을 0으로 초기화했습니다. 목록을 통해 돌아가서 각 인덱스에서 0-1의 임의의 부동 소수점 숫자를 넣으려고합니다. 이 작업을 수행하는 동안 while 루프를 사용하고 있습니다. 그러나 코드는 난수를 넣지 않습니다.이 목록에는 여전히 0이 채워져 있으며 그 이유를 이해할 수 없습니다. 나는 목록에 여전히 0으로 가득하다는 것을 알려주는 print 문을 삽입했습니다. 나는 어떤 도움을 주셔서 감사합니다!파이썬에서 난수 목록 생성하기

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] 

그러나 당신은 "%d" % randomList[index]와 itegers 같은 요소의 인쇄, 그래서 그 모든 값을 0으로 반올림됩니다.

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

또는 '{:M:Nf}.format' :

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

또는 단지'인쇄 (randomList [인덱스])'. – user2357112

4

왜 당신이 while 후 목록을 인쇄하지 않는 당신은 부동 소수점 숫자를 인쇄하려면 "% f를"포맷을 사용할 수 있습니까?

...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)] 
관련 문제