我想使用i和j之间的n个数字创建一个随机数。例如,对于n = 10且i = 1且j = 5,期望这样的输出:2414243211
。我使用此代码在R中完成了它:
paste(floor(runif(10,1,5)),collapse="") #runif create 10 random number between 1 and 5 and floor make them as integer and finally paste makes them as a sequence of numbers instead of array.
我想在Python中做同样的事情。我找到了random.uniform
,但它生成了一个数字,我不想使用循环。
import random
import math
math.floor(random.uniform(1,5)) #just generate 1 number between 1 and 5
更新:
答案 0 :(得分:4)
如果我理解你的问题(我不确定),并且你有Python 3.6,你可以使用random.choices
:
>>> from random import choices
>>> int(''.join(map(str, choices(range(1, 5), k=10))))
2121233233
答案 1 :(得分:3)
如果你认为列表推导是循环(它们实际上在很多方面),你会对此不满意但我会试试运气:
from random import randint
res = ''.join([str(randint(1, 5)) for _ in range(10)])
print(res) #-> 4353344154
注意:
int
。randint
包含;可能会生成并返回start
(1
)和end
(5
)。如果您不想这样做,请修改它们(start = 2
和end = 4
)random.uniform
(以及随后的math.floor()
),而不仅仅是randint
?答案 2 :(得分:3)
random.choices()功能可以满足您的需求:
>>> from random import choices
>>> n, i, j = 10, 1, 5
>>> population = list(map(str, range(i, j+1)))
>>> ''.join(choices(population, k=n))
'5143113531'
答案 3 :(得分:2)
x = ''.join([str(math.floor(random.uniform(1,5))) for i in range(10)])