如何在Python中生成介于0和9(含)之间的随机整数?

例如,0、1、2、3、4、5、6、7、8、9


当前回答

通过random.shuffle尝试

>>> import random
>>> nums = range(10)
>>> random.shuffle(nums)
>>> nums
[6, 3, 5, 4, 0, 1, 2, 9, 8, 7]

其他回答

尝试random.randit:

import random
print(random.randint(0, 9))

文档状态:

随机随机(a,b)返回一个随机整数N,使得a<=N<=b。

OpenTURNS不仅可以模拟随机整数,还可以使用UserDefined定义的类定义关联的分布。

以下模拟了分布的12个结果。

import openturns as ot
points = [[i] for i in range(10)]
distribution = ot.UserDefined(points) # By default, with equal weights.
for i in range(12):
    x = distribution.getRealization()
    print(i,x)

这将打印:

0 [8]
1 [7]
2 [4]
3 [7]
4 [3]
5 [3]
6 [2]
7 [9]
8 [0]
9 [5]
10 [9]
11 [6]

括号在那里,因为x是一维中的一个点。在对getSample的一次调用中生成12个结果会更容易:

sample = distribution.getSample(12)

将产生:

>>> print(sample)
     [ v0 ]
 0 : [ 3  ]
 1 : [ 9  ]
 2 : [ 6  ]
 3 : [ 3  ]
 4 : [ 2  ]
 5 : [ 6  ]
 6 : [ 9  ]
 7 : [ 5  ]
 8 : [ 9  ]
 9 : [ 5  ]
10 : [ 3  ]
11 : [ 2  ]

有关此主题的更多详细信息,请参见:http://openturns.github.io/openturns/master/user_manual/_generated/openturns.UserDefined.html

这更多是一种数学方法,但它在100%的时间内都有效:

假设您想使用random()函数生成a和b之间的数字。要实现这一点,只需执行以下操作:

num=(b-a)*随机随机()+a;

当然,你可以生成更多的数字。

生成0到9之间的随机整数。

import numpy
X = numpy.random.randint(0, 10, size=10)
print(X)

输出:

[4 8 0 4 9 6 9 9 0 7]

secrets模块是Python 3.6中的新模块。这比用于加密或安全用途的随机模块要好。

要随机打印0-9范围内的整数,请执行以下操作:

from secrets import randbelow
print(randbelow(10))

有关详细信息,请参见PEP 506。

注意,这确实取决于用例。使用随机模块,您可以设置一个随机种子,这对于伪随机但可重复的结果很有用,而这对于机密模块是不可能的。

随机模块也更快(在Python 3.9上测试):

>>> timeit.timeit("random.randrange(10)", setup="import random")
0.4920286529999771
>>> timeit.timeit("secrets.randbelow(10)", setup="import secrets")
2.0670733770000425