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

时间:2010-10-22 12:48:29

标签: python random integer

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

例如,0123456,{{ 1}},78

25 个答案:

答案 0 :(得分:1798)

尝试:

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

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

答案 1 :(得分:319)

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

random.randint(a, b)

返回随机整数N,使得< = N< = b。

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

答案 2 :(得分:105)

试试这个:

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)

答案 3 :(得分:64)

from random import randint

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

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

答案 4 :(得分:46)

{3}}模块是Python 3.6中的新功能。这比加密或安全使用的secrets模块更好。

随机打印0-9中的整数:

from secrets import randbelow
print(randbelow(10))

有关详细信息,请参阅random

答案 5 :(得分:25)

通过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]

答案 6 :(得分:21)

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

答案 7 :(得分:16)

如果连续数字randintrandrange可能是最佳选择,但如果序列中有多个不同的值(即list),您也可以使用{{3 }}:

>>> 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和更新版本中还有choice

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

答案 8 :(得分:11)

如果您想使用numpy,请使用以下内容:

import numpy as np
print(np.random.randint(0,10))

答案 9 :(得分:10)

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

  

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

然而,许多回复仅显示如何获取一个随机数,例如random.randintrandom.choice

多个随机整数

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

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 以下是一些解决隐含问题的选项:

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

random.sample(range(10), k=N)
# [4, 5, 1, 2, 3]

在Python 3.6中,random.choices从群体中返回k个选择(替换):

random.choices(range(10), k=N)
# [3, 2, 0, 8, 2]

另请参阅使用numpy.random.choice的{​​{3}}。

1 即@John Lawrence Aspden,@ S T Mohammed,@ SiddTheKid,@ user14372,@ zangw,et al。

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

答案 10 :(得分:9)

>>> 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]

答案 11 :(得分:6)

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

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

答案 12 :(得分:6)

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

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

输出:

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

答案 13 :(得分:5)

最好的方法是使用导入随机功能

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删除并返回字典n中的任意值。

答案 14 :(得分:5)

您可以尝试以下方法:

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在半开间隔[low,high)内生成均匀分布的数字。

     

2.> astype(int)将numpy数组强制转换为int数据类型。

     

3.>我选择了size =(15,)。这将为您提供一个长度= 15的numpy数组。

有关numpy.random.uniform的更多信息

有关numpy.ndarray.astype的更多信息

答案 15 :(得分:4)

尝试一下

SELECT IFNULL(field->>'$.b', 'null') FROM table_a;

答案 16 :(得分:3)

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

from random import randrange

randrange(10)

答案 17 :(得分:3)

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

假设您要使用random.random()函数来生成ab之间的数字。为此,只需执行以下操作:

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

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

答案 18 :(得分:3)

您需要 For Each cell In ws.Columns(1).Cells If IsEmpty(cell) Then Sheets("Text").Range("A2").Copy cell Exit For End If Next cell python 模块,它是您的标准库的一部分。 使用代码...

random

这会将变量 from random import randint num1= randint(0,9) 设置为介于 num10 之间的随机数。

答案 19 :(得分:2)

我使用变量来控制范围

from random import randint 
numberStartRange = 1
numberEndRange = 9
randomNumber = randint(numberStartRange, numberEndRange)
print(randomNumber)

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

答案 20 :(得分:2)

我想我会用 quantumrand 添加这些答案,它使用 ANU 的量子数生成器。不幸的是,这需要互联网连接,但如果您担心数字的“随机性”,那么这可能很有用。

https://pypi.org/project/quantumrand/

示例

import quantumrand

number = quantumrand.randint(0, 9)

print(number)

输出:4

文档中有很多不同的示例,包括掷骰子和列表选择器。

答案 21 :(得分:1)

random模块的文档页面开始:

  

警告:此模块的伪随机数生成器不应为   用于安全目的。如果您使用os.urandom()或SystemRandom   需要加密安全的伪随机数生成器。

在Python 2.4中引入的

random.SystemRandom被认为是cryptographically secure。在编写本文时,它在Python 3.7.1中仍然可用。

>>> 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'

除其他一些答案外,还可以使用string.digits而不是range来理解。根据需要混合搭配。

答案 22 :(得分:1)

您可以尝试从 Python 导入 random 模块,然后让它在九个数字之间进行选择。这真的很基础。

import random
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    

如果您以后要使用它,您可以尝试将计算机选择的值放入一个变量中,但如果不是,则打印函数应该这样工作:

choice = random.choice(numbers)
print(choice)

答案 23 :(得分:0)

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是一维Point。 只需一次调用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

答案 24 :(得分:-1)

对于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'或者' ^!〜= - ><'要更改要拉出的字符池,请更改范围以更改生成的字符数。