Generate random integers between 0 and 9
如何在Python中生成介于0和9(包括0和9)之间的随机整数?
例如:
尝试:
1 2 | from random import randint print(randint(0, 9)) |
更多信息:https://docs.python.org/3/library/random.html random.randint
1 2 | import random print(random.randint(0,9)) |
1 | random.randint(a, b) |
返回一个随机整数n,使a<=n<=b。
文档:https://docs.python.org/3.1/library/random.html random.randint
试试这个:
1 2 3 4 5 6 7 | 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) |
1 2 3 | from random import randint x = [randint(0, 9) for p in range(0, 10)] |
这将生成10个范围为0到9(包括0到9)的伪随机整数。
要随机打印包含范围0-9的整数:
1 2 | from secrets import randbelow print(randbelow(10)) |
有关详细信息,请参阅PEP 506。
通过
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] |
选择数组的大小(在本例中,我选择了大小为20)。然后,使用以下方法:
1 2 | import numpy as np np.random.randint(10, size=(1, 20)) |
您可以期望看到以下形式的输出(每次运行时都会返回不同的随机整数;因此您可以期望输出数组中的整数与下面给出的示例不同)。
1 | array([[1, 6, 1, 2, 8, 6, 3, 3, 2, 5, 6, 5, 0, 9, 5, 6, 4, 5, 9, 3]]) |
对于连续数,
1 2 3 4 | >>> import random >>> values = list(range(10)) >>> random.choice(values) 5 |
1 2 3 | >>> values = [1, 2, 3, 5, 7, 10] >>> random.choice(values) 7 |
如果您需要它"加密性强",在python 3.6和更新版本中还有一个
1 2 3 4 | >>> import secrets >>> values = list(range(10)) >>> secrets.choice(values) 2 |
如果要使用numpy,请使用以下命令:
1 2 | import numpy as np print(np.random.randint(0,10)) |
原始问题意味着生成多个随机整数。
How can I generate integers between 0 and 9 (inclusive) in Python?
然而,许多回答只显示如何获得一个随机数,例如
多个随机整数
为了清楚起见,您仍然可以使用这些技术通过迭代
1 2 3 4 5 6 7 8 9 10 | import 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下面是一些解决隐含问题的选项:
1 2 | random.sample(range(10), k=N) # [4, 5, 1, 2, 3] |
在python 3.6中,
1 2 | random.choices(range(10), k=N) # [3, 2, 0, 8, 2] |
另请参阅使用
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 3 | import numpy X = numpy.random.randint(0, 10, size=10) print(X) |
输出:
1 | [4 8 0 4 9 6 9 9 0 7] |
1 2 3 4 | import random n = 1 # specify the no. of numbers num = random.sample(range(10), n) num[0] # is the required number |
最好的方法是使用导入随机函数
1 2 | import random print(random.sample(range(10), 10)) |
或不导入任何库:
1 2 3 4 5 6 | n={} for i in range(10): n[i]=i for p in range(10): print(n.popitem()[1]) |
这里,popitems从字典
您可以尝试以下操作:
1 2 3 4 | import 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%地工作:
假设您想使用
当然,您可以生成更多的数字。
我用变量控制范围
1 2 3 4 5 | from random import randint numberStartRange = 1 numberEndRange = 9 randomNumber = randint(numberStartRange, numberEndRange) print(randomNumber) |
我使用了print函数来查看结果。如果你不需要这个,你可以发表评论。
对于您给出的示例(0到9之间的随机整数),最干净的解决方案是:
1 2 3 | from random import randrange randrange(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 5 | str_Key ="" str_RandomKey ="" for int_I in range(128): str_Key = random.choice('0123456789') str_RandomKey = str_RandomKey + str_Key |
只需添加"abcd"和"abcd"或"^"等字符即可!~=-><'要更改要从中提取的字符池,请更改范围以更改生成的字符数。