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

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

技术背景

在Python编程中,经常需要生成随机整数,比如模拟实验、游戏开发、数据测试等场景。Python提供了多种方式来生成0到9之间的随机整数,每种方式都有其特点和适用场景。

实现步骤

使用random模块

random模块是Python标准库的一部分,提供了多种生成随机数的方法。

  • 使用randrange方法
1
2
from random import randrange
print(randrange(10))
  • 使用randint方法
1
2
import random
print(random.randint(0, 9))
  • 生成多个随机整数
1
2
3
from random import randint
x = [randint(0, 9) for p in range(0, 10)]
print(x)

使用secrets模块

secrets模块在Python 3.6及以上版本中可用,适用于密码学或安全相关的场景。

1
2
from secrets import randbelow
print(randbelow(10))

使用numpy

numpy是一个强大的数值计算库,在处理大量数据时性能更优。

1
2
3
import numpy as np
X1 = np.random.randint(low=0, high=10, size=(15,))
print(X1)

使用其他方法

  • 使用random.random计算随机整数
1
2
3
4
5
6
import random
lo = 0
hi = 10
size = 5
result = [lo + int(random.random() * (hi - lo)) for _ in range(size)]
print(result)
  • 使用random.shuffle方法
1
2
3
4
import random
nums = list(range(10))
random.shuffle(nums)
print(nums)
  • 使用random.choice方法
1
2
3
import random
values = list(range(10))
print(random.choice(values))

核心代码

生成单个随机整数

1
2
3
4
5
6
7
8
9
10
11
12
# 使用random.randint
import random
num = random.randint(0, 9)
print(num)

# 使用secrets.randbelow
from secrets import randbelow
print(randbelow(10))

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

生成多个随机整数

1
2
3
4
5
6
7
8
9
10
11
# 使用random模块生成多个随机整数
from random import randint
size = 10
nums = [randint(0, 9) for _ in range(size)]
print(nums)

# 使用numpy库生成多个随机整数
import numpy as np
size = 10
nums = np.random.randint(0, 10, size=size)
print(nums)

最佳实践

  • 性能要求不高的普通场景:使用random模块的randintrandrange方法,代码简单易懂。
  • 安全相关场景:使用secrets模块,其生成的随机数更具安全性。
  • 处理大量数据的场景:使用numpy库的randintdefault_rng().integers方法,性能更优。

常见问题

  • 随机数的可重复性random模块可以通过random.seed()方法设置随机数种子,从而实现可重复的随机数序列;而secrets模块不支持设置种子。
  • 性能问题:在生成大量随机数时,numpy库的性能明显优于random模块。可以使用timeit模块进行性能测试,选择合适的方法。
  • 安全问题random模块的伪随机数生成器不适合用于安全目的,建议使用secrets模块或os.urandom()SystemRandom

在Python中生成0到9之间的随机整数
https://119291.xyz/posts/generate-random-integers-between-0-and-9/
作者
ww
发布于
2025年5月26日
许可协议