python从入门到精通8:数字随机数

在Python中,随机数的生成和处理是编程中常见的需求之一。Python的标准库提供了random模块,该模块包含了生成各种类型随机数的函数。本教程将深入探讨Python中random模块的使用,包括生成随机数、随机选择、随机打乱顺序等高级用法。

1. 导入random模块

首先,我们需要导入random模块来使用其提供的函数。

import random

2. 生成随机整数

random模块中的randint()函数用于生成指定范围内的随机整数(包括两端)。

# 生成1到10之间的随机整数
random_int = random.randint(1, 10)
print(random_int)

randrange()函数类似于range()函数,但它返回一个随机整数。

# 生成0到10之间的随机整数(不包括10)
random_range = random.randrange(10)
print(random_range)

3. 生成随机浮点数

random()函数用于生成[0.0, 1.0)范围内的随机浮点数。

# 生成随机浮点数
random_float = random.random()
print(random_float)

如果你想生成指定范围内的随机浮点数,可以使用uniform()函数。

# 生成1.0到5.0之间的随机浮点数
random_uniform = random.uniform(1.0, 5.0)
print(random_uniform)

4. 从序列中随机选择元素

choice()函数用于从非空序列(如列表、元组、字符串)中随机选择一个元素。

# 从列表中随机选择一个元素
my_list = [1, 2, 3, 4, 5]
random_choice = random.choice(my_list)
print(random_choice)

choices()函数用于从序列中随机选择多个元素,可以指定每个元素被选中的权重。

# 从列表中随机选择多个元素,可以指定权重
my_list = ['apple', 'banana', 'cherry']
weights = [1, 3, 1]  # banana被选中的概率是其他水果的三倍
random_choices = random.choices(my_list, weights=weights, k=3)
print(random_choices)

5. 随机打乱序列顺序

shuffle()函数用于就地(in-place)打乱列表元素的顺序。

# 打乱列表元素的顺序
my_list = [1, 2, 3, 4, 5]
random.shuffle(my_list)
print(my_list)

sample()函数用于从列表中随机选择指定数量的不重复元素。

# 从列表中随机选择3个不重复的元素
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
random_sample = random.sample(my_list, 3)
print(random_sample)

6. 种子(Seed)

随机数生成器是伪随机数生成器,这意味着它们是基于算法的,并且如果给定了相同的种子值,将产生相同的随机数序列。seed()函数用于设置随机数生成器的种子。

# 设置随机数生成器的种子
random.seed(1)
random_int1 = random.randint(1, 10)
print(random_int1)  # 假设输出为5

# 再次设置相同的种子
random.seed(1)
random_int2 = random.randint(1, 10)
print(random_int2)  # 输出应该与random_int1相同,因为种子相同

7. 使用场景

  • 模拟和测试:在编写需要模拟随机事件的程序时,随机数生成器非常有用。例如,模拟赌博游戏、随机事件触发等。
  • 密码学:在密码学中,随机数用于生成密钥、初始化向量等,以确保加密过程的安全性。
  • 游戏开发:在游戏中,随机数用于生成随机地图、敌人位置、道具掉落等,以增加游戏的趣味性和挑战性。
  • 人工智能和机器学习:在机器学习和深度学习中,随机数用于初始化权重、选择训练样本等,以确保模型的泛化能力。

8. 注意事项

  • 随机数生成器不是真正的随机数生成器,而是伪随机数生成器。
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中的随机数生成器可以通过设置种子值来控制生成的随机数序列。当使用相同的种子值时,生成的随机数序列是一致的。而当不设置种子值或使用不同的种子值时,每次生成的随机数序列都是不同的。 在Python中,可以使用`random.seed()`函数来设置随机数生成器的种子值。当`seed()`函数没有参数时,每次生成的随机数是不一样的;当`seed()`函数有参数时,生成的随机数序列是一样的,不同的参数会生成不同的随机数序列。具体可以参考以下代码示例: ```python import random # 随机数不一样 random.seed() print('随机数1:',random.random()) random.seed() print('随机数2:',random.random()) # 随机数一样 random.seed(1) print('随机数3:',random.random()) random.seed(1) print('随机数4:',random.random()) random.seed(2) print('随机数5:',random.random()) ``` 输出结果为: ``` 随机数1: 0.7643602170615428 随机数2: 0.31630323818329664 随机数3: 0.13436424411240122 随机数4: 0.13436424411240122 随机数5: 0.9560342718892494 ``` 另外,在NumPy中也提供了随机数生成器,并且可以通过设置种子值来控制生成的随机数序列。使用`np.random.seed()`函数可以设置种子值,并且生成的随机数序列是一致的。具体可以参考以下代码示例: ```python import numpy as np np.random.seed(0) for i in range(6): print(np.random.rand()) np.random.seed(0) for i in range(3): print(np.random.rand()) ``` 输出结果为: ``` 0.5488135039273248 0.7151893663724195 0.6027633760716439 0.5448831829968969 0.4236547993389047 0.6458941130666561 0.5488135039273248 0.7151893663724195 0.6027633760716439 ``` 总结来说,无论是在Python的random模块还是NumPy的np.random模块,都可以通过设置种子值来控制随机数生成器,从而得到一致的随机数序列。这对于需要重现实验结果或需要固定随机性的场景非常有用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python设置随机数种子](https://blog.csdn.net/weixin_43466026/article/details/118751899)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [随机数生成器-Python编写](https://download.csdn.net/download/weixin_40518715/12360620)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值