如何在Python中生成0到9(含)之间的随机整数?
例如,0、1、2、3、4、5、6、7、8、9。
0
1
2
3
4
5
6
7
8
9
试试吧。
from random import randrange print(randrange(10))
更多信息:http://docs.python.org/library/random.html#random.randrange
import random print(random.randint(0,9))
random.randint(a, b)
返回一个随机整数N,使得a
试试这个。
from random import randrange, uniform # randrange gives you an integral value irand = randrange(0, 10) # uniform gives you a floating-point value frand = uniform(0, 10)
from random import randint x = [randint(0, 9) for p in range(0, 10)]
这将产生10个范围为0到9(含)的伪随机整数。
secrets 模块是 Python 3.6 中的新模块。 这比 [random][2] 模块在密码学或安全方面的用途要好。
secrets
random
随机打印一个包含范围为0-9的整数。
from secrets import randbelow print(randbelow(10))
详见[PEP506][3]。
1:
[2]: https://docs.python.org/3.6/library/random.html#module-random [3]: [3]:https://www.python.org/dev/peps/pep-0506/
试试通过random.shuffle来实现。
random.shuffle
>>> import random >>> nums = [x for x in range(10)] >>> random.shuffle(nums) >>> nums [6, 3, 5, 4, 0, 1, 2, 9, 8, 7]
选择数组的大小(在本例中,我选择的大小是20)。 然后,使用下面的方法。
import numpy as np np.random.randint(10, size=(1, 20))
你可以期望看到以下形式的输出(每次运行它都会返回不同的随机整数,因此你可以期望输出数组中的整数与下面的例子不同)。 因此,您可以预期输出数组中的整数会与下面的例子不同*)。)
array([[1, 6, 1, 2, 8, 6, 3, 3, 2, 5, 6, 5, 0, 9, 5, 6, 4, 5, 9, 3]])
如果是连续数,randint或randrange可能是最好的选择,但如果你有几个不同的值在一个序列中(即list),你也可以使用choice。 列表")你也可以使用 choice。
randint
randrange
list
choice
>>> import random >>> values = list(range(10)) >>> random.choice(values) 5
choice也适用于非连续样本中的一个项目。
>>> values = [1, 2, 3, 5, 7, 10] >>> random.choice(values) 7
如果你需要它的"密码学强"。 还有一个在python 3.6及更新版本中的secrets.choice。
secrets.choice
>>> import secrets >>> values = list(range(10)) >>> secrets.choice(values) 2
我会尝试以下几种方法之一。
1.>.numpy.random.randint numpy.random.randint**。
import numpy as np X1 = np.random.randint(low=0, high=10, size=(15,)) print (X1) >>> array([3, 0, 9, 0, 5, 7, 6, 9, 6, 7, 9, 6, 6, 9, 8])
2.>.[numpy.random.uniform][2] [numpy.random.uniform][2]**。
import numpy as np X2 = np.random.uniform(low=0, high=10, size=(15,)).astype(int) print (X2) >>> array([8, 3, 6, 9, 1, 0, 3, 6, 3, 3, 1, 2, 4, 0, 4])
3.> [random.randrange][3]
from random import randrange X3 = [randrange(10) for i in range(15)] print (X3) >>> [2, 1, 4, 1, 2, 8, 8, 6, 4, 1, 0, 5, 8, 3, 5]
4.> [random.randint][4]
from random import randint X4 = [randint(0, 9) for i in range(0, 15)] print (X4) >>> [6, 2, 6, 9, 5, 3, 2, 3, 3, 4, 4, 7, 4, 9, 6]
速度:
&#9658.np.random.randint是快的。 np.random.randint是最快的,其次是np.random.uniform和random.randrange。 random.randint是最慢的**。
►。 np.random.randint和np.random.uniform都比random.randrange和random.randint快得多**(约8 - 12倍)。
%timeit np.random.randint(low=0, high=10, size=(15,)) >> 1.64 µs ± 7.83 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) %timeit np.random.uniform(low=0, high=10, size=(15,)).astype(int) >> 2.15 µs ± 38.6 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each) %timeit [randrange(10) for i in range(15)] >> 12.9 µs ± 60.4 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each) %timeit [randint(0, 9) for i in range(0, 15)] >> 20 µs ± 386 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
注:。
1.> np.random.randint在半开区间[低,高]内产生随机整数。
2.> [np.random.uniform][2] 在半开区间[低,高]上生成均匀分布的数。
3.> [random.randrange(stop)][3] 从range(start,stop,step)中生成一个随机数。
4.> [random.randint(a, b)][4] 返回一个随机整数N,使得a <= N <= b。
5.> [astype(int)][5] 将numpy数组转换为int数据类型。
6.> 我选择了size = (15,)。 这将给你一个长度=15的numpy数组。
[2]: https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.uniform.html [3]: https://docs.python.org/2/library/random.html#random.randrange [4]: https://docs.python.org/2/library/random.html [5]: https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.ndarray.astype.html
虽然很多帖子演示了如何获得*个随机整数,但最初的问题是问如何生成随机整数s(复数)。
为了清楚起见,这里我们演示一下如何得到多个随机整数。
给定
>>> import random lo = 0 hi = 10 size = 5
代码
多个随机整数
# A >>> [lo + int(random.random() * (hi - lo)) for _ in range(size)] [5, 6, 1, 3, 0]
<!->
# B >>> [random.randint(lo, hi) for _ in range(size)] [9, 7, 0, 7, 3]
# C >>> [random.randrange(lo, hi) for _ in range(size)] [8, 3, 6, 8, 7]
# D >>> lst = list(range(lo, hi)) >>> random.shuffle(lst) >>> [lst[i] for i in range(size)] [6, 8, 2, 5, 1]
# E >>> [random.choice(range(lo, hi)) for _ in range(size)] [2, 1, 6, 9, 5]
随机整数样本
# F >>> random.choices(range(lo, hi), k=size) [3, 2, 0, 8, 2]
# G >>> random.sample(range(lo, hi), k=size) [4, 5, 1, 2, 3]
细节。
一些帖子演示了如何原生生成多随机整数.1</sup>。 这里有一些选项可以解决隐含的问题。
random.random
[0.0, 1.0)
random.randint
N
a <= N <= b
random.randrange
randint(a, b+1)
random.choice
random.chips
k
random.sample
另见R. Hettinger'的[talk][12],关于使用random模块的例子的Chunking和Aliasing。
这里是标准库和Numpy中一些随机函数的比较。
| | random | numpy.random | |-|-----------------------|----------------------------------| |A| random() | random() | |B| randint(low, high) | randint(low, high) | |C| randrange(low, high) | randint(low, high) | |D| shuffle(seq) | shuffle(seq) | |E| choice(seq) | choice(seq) | |F| choices(seq, k) | choice(seq, size) | |G| sample(seq, k) | choice(seq, size, replace=False) |
你也可以在Numpy中快速地将许多[分布][10]中的一个转换为随机整数的样本.3
例子
>>> np.random.normal(loc=5, scale=10, size=size).astype(int) array([17, 10, 3, 1, 16]) >>> np.random.poisson(lam=1, size=size).astype(int) array([1, 3, 0, 2, 0]) >>> np.random.lognormal(mean=0.0, sigma=1.0, size=size).astype(int) array([1, 3, 1, 5, 1])
1即@John Lawrence Aspden,@S T Mohammed,@SiddTheKid,@user14372,@zangw等人. 2@prashanth提到这个模块显示一个整数. 3由@Siddharth Satpathy</sub>演示。
[1]: https://docs.python.org/3/library/random.html#random.choice [2]: https://docs.python.org/3/library/random.html#random.sample [3]: https://docs.python.org/3/library/random.html#random.choices [5]: https://stackoverflow.com/a/47321460/4531270
[6]: https://docs.python.org/3/library/random.html#random.choice [7]: https://docs.python.org/3/library/random.html#random.shuffle [8]: https://docs.python.org/3/library/random.html#random.randrange [9]: https://docs.python.org/3/library/random.html#random.randint [10]: https://docs.scipy.org/doc/numpy-1.15.0/reference/routines.random.html#distributions [11]: https://docs.python.org/3.9/library/random.html#random.random [12]: https://youtu.be/UANN2Eu6ZnM?t=622
如果你想使用numpy,那么就使用下面的方法。
import numpy as np print(np.random.randint(0,10))
>>> import random >>> random.randrange(10) 3 >>> random.randrange(10) 1
要想获得十个样品的清单。
>>> [random.randrange(10) for x in range(10)] [9, 0, 4, 0, 5, 7, 4, 3, 6, 8]
生成0到9之间的随机整数。
import numpy X = numpy.random.randint(0, 10, size=10) print(X)
产出:
[4 8 0 4 9 6 9 9 0 7]
最好的方法是使用导入Random函数
import random print(random.sample(range(10), 10))
或没有任何库导入。
n={} for i in range(10): n[i]=i for p in range(10): print(n.popitem()[1])
这里[popitems][1]从字典n中删除并返回一个任意值。
n
[1]: https://docs.python.org/3.6/library/stdtypes.html#dict.popitem
"random.sample "是另一种可以使用的方法。
import random n = 1 # specify the no. of numbers num = random.sample(range(10), n) num[0] # is the required number
这更多的是一种数学方法,但它的工作原理是100%的。
比如说你想用random.random()函数来生成一个介于a和b之间的数字。 要实现这一点,只需做以下操作。
random.random()
a
b
num = (b-a)*random.random() + a;。
num = (b-a)*random.random() + a;
当然,你可以生成更多的数字。
来自[随机][1]模块的文档页。
警告:本模块的伪随机生成器不应该被使用。 这个模块的伪随机发生器不应该是...。 用于安全目的。 使用os.urandom()或SystemRandom,如果你想使用 需要一个密码学安全的伪随机数发生器。
警告:本模块的伪随机生成器不应该被使用。 这个模块的伪随机发生器不应该是...。
用于安全目的。 使用os.urandom()或SystemRandom,如果你想使用
需要一个密码学安全的伪随机数发生器。
在Python 2.4中引入的[random.SystemRandom][2]被认为是加密安全的。 它在Python 3.7.1中仍然可用,这是在编写本文时的最新版本。
>>>。 输入字符串 >>>。 字符串.数字 '0123456789' >>>。 导入随机 >>>。 random.SystemRandom().choose(string.digits) '8' >>>。 随机.系统随机().选择(string.digits) '1' >>>。 随机.SystemRandom().choose(string.digits) '8' >>>。 随机.系统随机().选择(string.digits) '5'
根据自己的需要进行混搭。 [1]: https://docs.python.org/2.7/library/random.html [2]: https://docs.python.org/2.7/library/random.html?highlight=random#random.SystemRandom
在Python 3.6中,我的运气比较好。
str_Key = "" str_RandomKey = "" for int_I in range(128): str_Key = random.choice('0123456789') str_RandomKey = str_RandomKey + str_Key
只需添加'ABCD'等字符。 和'ABCD'。 或'^!~=-><'。 来改变要拉取的字符池,改变范围来改变生成的字符数。
试试吧。
更多信息:http://docs.python.org/library/random.html#random.randrange
返回一个随机整数N,使得a
试试这个。
这将产生10个范围为0到9(含)的伪随机整数。
secrets
模块是 Python 3.6 中的新模块。 这比 [random
][2] 模块在密码学或安全方面的用途要好。随机打印一个包含范围为0-9的整数。
详见[PEP506][3]。
1:
[2]: https://docs.python.org/3.6/library/random.html#module-random [3]: [3]:https://www.python.org/dev/peps/pep-0506/
试试通过
random.shuffle
来实现。选择数组的大小(在本例中,我选择的大小是20)。 然后,使用下面的方法。
你可以期望看到以下形式的输出(每次运行它都会返回不同的随机整数,因此你可以期望输出数组中的整数与下面的例子不同)。 因此,您可以预期输出数组中的整数会与下面的例子不同*)。)
如果是连续数,
randint
或randrange
可能是最好的选择,但如果你有几个不同的值在一个序列中(即list
),你也可以使用choice
。 列表")你也可以使用choice
。choice
也适用于非连续样本中的一个项目。如果你需要它的"密码学强"。 还有一个在python 3.6及更新版本中的
secrets.choice
。我会尝试以下几种方法之一。
1.>.numpy.random.randint numpy.random.randint**。
2.>.[numpy.random.uniform][2] [numpy.random.uniform][2]**。
3.> [random.randrange][3]
4.> [random.randint][4]
速度:
&amp;#9658.np.random.randint是快的。 np.random.randint是最快的,其次是np.random.uniform和random.randrange。 random.randint是最慢的**。
►。 np.random.randint和np.random.uniform都比random.randrange和random.randint快得多**(约8 - 12倍)。
注:。
1:
[2]: https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.uniform.html [3]: https://docs.python.org/2/library/random.html#random.randrange [4]: https://docs.python.org/2/library/random.html [5]: https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.ndarray.astype.html
虽然很多帖子演示了如何获得*个随机整数,但最初的问题是问如何生成随机整数s(复数)。
为了清楚起见,这里我们演示一下如何得到多个随机整数。
给定
代码
多个随机整数
<!->
<!->
<!->
<!->
随机整数样本
<!->
细节。
一些帖子演示了如何原生生成多随机整数.1</sup>。 这里有一些选项可以解决隐含的问题。
random.random
][10] 返回一个范围为[0.0, 1.0)
的随机浮点数。random.randint
][9]返回一个随机整数N
,即a <= N <= b
。random.randrange
][8]randint(a, b+1)
的别称。random.shuffle
][7]在原地洗牌。random.choice
][6]从非空序列中返回一个随机元素。random.chips
][3]从一个群体中返回k
个选择(有替换,Python 3.6+)random.sample
][2]从人口中返回k
个唯一的选择(不替换):2</sup>。另见R. Hettinger'的[talk][12],关于使用
random
模块的例子的Chunking和Aliasing。这里是标准库和Numpy中一些随机函数的比较。
你也可以在Numpy中快速地将许多[分布][10]中的一个转换为随机整数的样本.3
例子
1即@John Lawrence Aspden,@S T Mohammed,@SiddTheKid,@user14372,@zangw等人. 2@prashanth提到这个模块显示一个整数. 3由@Siddharth Satpathy</sub>演示。
[1]: https://docs.python.org/3/library/random.html#random.choice [2]: https://docs.python.org/3/library/random.html#random.sample [3]: https://docs.python.org/3/library/random.html#random.choices [5]: https://stackoverflow.com/a/47321460/4531270
[6]: https://docs.python.org/3/library/random.html#random.choice [7]: https://docs.python.org/3/library/random.html#random.shuffle [8]: https://docs.python.org/3/library/random.html#random.randrange [9]: https://docs.python.org/3/library/random.html#random.randint [10]: https://docs.scipy.org/doc/numpy-1.15.0/reference/routines.random.html#distributions [11]: https://docs.python.org/3.9/library/random.html#random.random [12]: https://youtu.be/UANN2Eu6ZnM?t=622
如果你想使用numpy,那么就使用下面的方法。
要想获得十个样品的清单。
生成0到9之间的随机整数。
产出:
最好的方法是使用导入Random函数
或没有任何库导入。
这里[popitems][1]从字典
n
中删除并返回一个任意值。[1]: https://docs.python.org/3.6/library/stdtypes.html#dict.popitem
"random.sample "是另一种可以使用的方法。
这更多的是一种数学方法,但它的工作原理是100%的。
比如说你想用
random.random()
函数来生成一个介于a
和b
之间的数字。 要实现这一点,只需做以下操作。num = (b-a)*random.random() + a;
。当然,你可以生成更多的数字。
来自[随机][1]模块的文档页。
在Python 2.4中引入的[random.SystemRandom][2]被认为是加密安全的。 它在Python 3.7.1中仍然可用,这是在编写本文时的最新版本。
根据自己的需要进行混搭。 [1]: https://docs.python.org/2.7/library/random.html [2]: https://docs.python.org/2.7/library/random.html?highlight=random#random.SystemRandom
在Python 3.6中,我的运气比较好。
只需添加'ABCD'等字符。 和'ABCD'。 或'^!~=-><'。 来改变要拉取的字符池,改变范围来改变生成的字符数。