产生0到9之间的随机整数

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

例如,0123456789

解决办法

试试吧。

from random import randrange
print(randrange(10))

更多信息:http://docs.python.org/library/random.html#random.randrange

评论(1)
import random
print(random.randint(0,9))

random.randint(a, b)

返回一个随机整数N,使得a

评论(0)

试试这个。

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)
评论(0)
from random import randint

x = [randint(0, 9) for p in range(0, 10)]

这将产生10个范围为0到9(含)的伪随机整数。

评论(0)

secrets 模块是 Python 3.6 中的新模块。 这比 [random][2] 模块在密码学或安全方面的用途要好。

随机打印一个包含范围为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/

评论(1)

试试通过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]
评论(1)

选择数组的大小(在本例中,我选择的大小是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]])
评论(1)

如果是连续数,randintrandrange可能是最好的选择,但如果你有几个不同的值在一个序列中(即list),你也可以使用choice。 列表")你也可以使用 choice

>>> import random
>>> values = list(range(10))
>>> random.choice(values)
5

choice也适用于非连续样本中的一个项目。

>>> values = [1, 2, 3, 5, 7, 10]
>>> random.choice(values)
7

如果你需要它的"密码学强&quot。 还有一个在python 3.6及更新版本中的secrets.choice

>>> import secrets
>>> values = list(range(10))
>>> secrets.choice(values)
2
评论(2)

我会尝试以下几种方法之一。

1.&gt.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.&gt.[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.uniformrandom.randrangerandom.randint最慢的**。

&#9658。 np.random.randintnp.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数组。

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

评论(0)

虽然很多帖子演示了如何获得*个随机整数,但最初的问题是问如何生成随机整数s(复数)。

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

为了清楚起见,这里我们演示一下如何得到多个随机整数。

给定

>>> 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&gt。 这里有一些选项可以解决隐含的问题。

  • A: [random.random][10] 返回一个范围为[0.0, 1.0)的随机浮点数。
  • B: [random.randint][9]返回一个随机整数N,即a <= N <= b
  • C: [random.randrange][8]randint(a, b+1)的别称。
  • D: [random.shuffle][7]在原地洗牌。
  • E: [random.choice][6]从非空序列中返回一个随机元素。
  • F: [random.chips][3]从一个群体中返回k个选择(有替换,Python 3.6+)
  • G: [random.sample][2]从人口中返回k个唯一的选择(不替换):2</sup&gt。

另见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&gt演示。

[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

评论(0)

如果你想使用numpy,那么就使用下面的方法。

import numpy as np
print(np.random.randint(0,10))
评论(3)
>>> 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)

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

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

产出:

[4 8 0 4 9 6 9 9 0 7]
评论(0)

最好的方法是使用导入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中删除并返回一个任意值。

[1]: https://docs.python.org/3.6/library/stdtypes.html#dict.popitem

评论(0)

"random.sample "是另一种可以使用的方法。

import random
n = 1 # specify the no. of numbers
num = random.sample(range(10),  n)
num[0] # is the required number
评论(0)

这更多的是一种数学方法,但它的工作原理是100%的。

比如说你想用random.random()函数来生成一个介于ab之间的数字。 要实现这一点,只需做以下操作。

num = (b-a)*random.random() + a;

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

评论(0)

来自[随机][1]模块的文档页。

警告:本模块的伪随机生成器不应该被使用。 这个模块的伪随机发生器不应该是...。

用于安全目的。 使用os.urandom()或SystemRandom,如果你想使用

需要一个密码学安全的伪随机数发生器。

在Python 2.4中引入的[random.SystemRandom][2]被认为是加密安全的。 它在Python 3.7.1中仍然可用,这是在编写本文时的最新版本。

>>&gt。
输入字符串
>>&gt。
字符串.数字
&#39;0123456789&#39;
>>&gt。
导入随机
>>&gt。
random.SystemRandom().choose(string.digits)
&#39;8&#39;
>>&gt。
随机.系统随机().选择(string.digits)
&#39;1&#39;
>>&gt。
随机.SystemRandom().choose(string.digits)
&#39;8&#39;
>>&gt。
随机.系统随机().选择(string.digits)
&#39;5&#39;

根据自己的需要进行混搭。 [1]: https://docs.python.org/2.7/library/random.html [2]: https://docs.python.org/2.7/library/random.html?highlight=random#random.SystemRandom

评论(0)

在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'。 或'^!~=-><&#39。 来改变要拉取的字符池,改变范围来改变生成的字符数。

评论(0)