python产生20个随机整数_关于python:生成0到9之间的随机整数

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

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

尝试:

1

2from random import randint

print(randint(0, 9))

更多信息:https://docs.python.org/3/library/random.html random.randint

只是一个说明,这些是伪随机数,它们在密码学上是不安全的。在不希望攻击者猜测您的数字的任何情况下都不要使用此选项。使用secrets模块获得更好的随机数。参考:docs.python.org/3/library/random.html

1

2import random

print(random.randint(0,9))

1random.randint(a, b)

返回一个随机整数n,使a<=n<=b。

文档:https://docs.python.org/3.1/library/random.html random.randint

试试这个:

1

2

3

4

5

6

7from 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)

1

2

3from random import randint

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

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

10还是9?我只有9分。

secrets模块是Python3.6中的新模块。这比用于加密或安全的random模块要好。

要随机打印包含范围0-9的整数:

1

2from secrets import randbelow

print(randbelow(10))

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

这将改进答案并应添加。如果有的话,应该添加更安全的答案。

通过random.shuffle试试这个

1

2

3

4

5>>> import random

>>> nums = [x for x in range(10)]

>>> random.shuffle(nums)

>>> nums

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

nums=范围(10)

选择数组的大小(在本例中,我选择了大小为20)。然后,使用以下方法:

1

2import numpy as np

np.random.randint(10, size=(1, 20))

您可以期望看到以下形式的输出(每次运行时都会返回不同的随机整数;因此您可以期望输出数组中的整数与下面给出的示例不同)。

1array([[1, 6, 1, 2, 8, 6, 3, 3, 2, 5, 6, 5, 0, 9, 5, 6, 4, 5, 9, 3]])

了解numpy如何生成指定大小的随机数组也很有帮助,而不仅仅是单个随机数。(文档:numpy.random.randint)

对于连续数,randint或randrange可能是最好的选择,但如果在一个序列中有几个不同的值(即list,您也可以使用choice:

1

2

3

4>>> import random

>>> values = list(range(10))

>>> random.choice(values)

5

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

1

2

3>>> values = [1, 2, 3, 5, 7, 10]

>>> random.choice(values)

7

如果您需要它"加密性强",在python 3.6和更新版本中还有一个secrets.choice:

1

2

3

4>>> import secrets

>>> values = list(range(10))

>>> secrets.choice(values)

2

如果我们想从序列中得到更多的数字怎么办?

如果不需要更换:random.sample。对于替换,您可以使用对choice的理解:例如,对于包含3个随机值的列表,替换为:[choice(values) for _ in range(3)]。

如果要使用numpy,请使用以下命令:

1

2import numpy as np

print(np.random.randint(0,10))

你可以告诉一些关于"麻木"的事情。

NoPyP.Org

是啊。谢谢你的链接。但我的意思是,你可以在引用两行代码之前提供详细信息来改进你的答案;比如,出于什么原因,有人宁愿使用它而不是已经内置的东西。不管怎样,你没有义务这么做。

原始问题意味着生成多个随机整数。

How can I generate integers between 0 and 9 (inclusive) in Python?

然而,许多回答只显示如何获得一个随机数,例如random.randint和random.choice。

多个随机整数

为了清楚起见,您仍然可以使用这些技术通过迭代n次来生成多个随机数:

1

2

3

4

5

6

7

8

9

10import random

N = 5

[random.randint(0, 9) for _ in range(N)]

# [9, 7, 0, 7, 3]

[random.choice(range(10)) for _ in range(N)]

# [8, 3, 6, 8, 7]

随机整数样本

有些文章演示了如何本机生成多个随机整数。1下面是一些解决隐含问题的选项:

random.sample返回k个群体的唯一选择(不替换):2

1

2random.sample(range(10), k=N)

# [4, 5, 1, 2, 3]

在python 3.6中,random.choices返回人群中的k选择(替换):

1

2random.choices(range(10), k=N)

# [3, 2, 0, 8, 2]

另请参阅使用numpy.random.choice的相关文章。

1即@john lawrence aspden,@s t mohammed,@siddthekid,@user14372,@zangw,et al.

2@prashanth提到该模块显示一个整数。

1

2

3

4

5>>> import random

>>> random.randrange(10)

3

>>> random.randrange(10)

1

要获得十个样本的列表:

1

2>>> [random.randrange(10) for x in range(10)]

[9, 0, 4, 0, 5, 7, 4, 3, 6, 8]

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

1

2

3import numpy

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

print(X)

输出:

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

如果您使用的是numpy,那么应该使用numpy的随机功能来生成这个列表,例如使用numpy.random.randint(0, 10, size=10)。你展示的方法毫无必要地效率低下。

random.sample是另一个可以使用的

1

2

3

4import random

n = 1 # specify the no. of numbers

num = random.sample(range(10), n)

num[0] # is the required number

最好的方法是使用导入随机函数

1

2import random

print(random.sample(range(10), 10))

或不导入任何库:

1

2

3

4

5

6n={}

for i in range(10):

n[i]=i

for p in range(10):

print(n.popitem()[1])

这里,popitems从字典n中删除并返回一个任意值。

您可以尝试以下操作:

1

2

3

4import numpy as np

print ( np.random.uniform(low=0, high=10, size=(15,)) ).astype(int)

>>> [8 3 6 9 1 0 3 6 3 3 1 2 4 0 4]

笔记:

1.> np.random.uniform generates uniformly distributed numbers over the half-open interval [low, high).

2.> astype(int) casts the numpy array to int data type.

3.> I have chosen size = (15,). This will give you a numpy array of length = 15.

有关numpy.random.uniform的详细信息

有关numpy.ndarray.astype的详细信息

试试这个

ZZU1

这更像是一种数学方法,但它可以100%地工作:

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

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

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

我用变量控制范围

1

2

3

4

5from random import randint

numberStartRange = 1

numberEndRange = 9

randomNumber = randint(numberStartRange, numberEndRange)

print(randomNumber)

我使用了print函数来查看结果。如果你不需要这个,你可以发表评论。

对于您给出的示例(0到9之间的随机整数),最干净的解决方案是:

1

2

3from random import randrange

randrange(10)

RandRange返回指定范围之间的单个数字。

@Shitalshah这正是问题想要的。运行接受的答案,并意识到它做的是相同的事情。

@shitalshah如果你想要0到9之间的所有数字,你可以使用range(10)。

From the documentation page for the random module:

Warning: The pseudo-random generators of this module should not be

used for security purposes. Use os.urandom() or SystemRandom if you

require a cryptographically secure pseudo-random number generator.

随机.Systemrandom,which was introduced in Python 2.4,is considered cryptraphically secure.它仍然可以在Python 3.7.1中找到,在写作的时候,它是当前的。

1

2

3

4

5

6

7

8

9

10

11

12>>> import string

>>> string.digits

'0123456789'

>>> import random

>>> random.SystemRandom().choice(string.digits)

'8'

>>> random.SystemRandom().choice(string.digits)

'1'

>>> random.SystemRandom().choice(string.digits)

'8'

>>> random.SystemRandom().choice(string.digits)

'5'

可以用一些其他答案来理解。根据你的需要混合和比赛。

我对python 3.6有更好的运气

1

2

3

4

5str_Key =""

str_RandomKey =""

for int_I in range(128):

str_Key = random.choice('0123456789')

str_RandomKey = str_RandomKey + str_Key

只需添加"abcd"和"abcd"或"^"等字符即可!~=->

你可能感兴趣的:(python产生20个随机整数)