Python随机数生成:randint和randrange的5个实际应用场景对比

Python内置random模块生成随机数的方法 这篇文章主要介绍了Python内置random模块生成随机数的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 本文我们详细地介绍下两个模块关于生成随机序列的其他使用方法。 随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等。Python内置的random模块提供了生成随机数的方法,使用这些方法时需要导入ra... 阅读详情

Python随机数生成实战:randint与randrange的五大场景深度解析

在Python的日常开发中,随机数生成是一个看似简单却暗藏玄机的功能点。无论是模拟数据、游戏开发、算法测试,还是简单的抽奖程序,random.randint()和random.randrange()这两个函数都是开发者工具箱里的常客。然而,很多开发者,甚至是有一定经验的朋友,对它们的使用往往停留在“随便选一个能用就行”的层面,这可能导致代码效率低下、逻辑不清晰,甚至产生难以察觉的边界错误。

今天,我们就来深入探讨这两个函数,但不止步于教科书式的“左闭右开”和“左闭右闭”的区别。我们将从五个真实、具体的应用场景出发,像解构一个精密的机械装置一样,剖析在何种情况下该选择哪个工具,以及为什么这个选择至关重要。你会发现,理解它们细微的差异,能让你的代码从“能跑”升级到“跑得优雅、健壮且高效”。

1. 基础认知:不仅仅是区间定义

在深入场景之前,让我们先快速、准确地建立对这两个函数的核心认知。这不仅仅是记住语法,更是理解其设计哲学。

random.randint(a, b) 函数如其名,生成一个在区间 [a, b] 内的随机整数。注意,这里是闭区间,意味着结果可能等于 a 或 b。它的行为非常直观,就像在数轴上从 a 到 b 之间(包括两端)随意戳一个点。

import random

# 模拟掷一个标准的六面骰子
dice_roll = random.randint(1, 6)
print(f"骰子点数: {dice_roll}")  # 输出可能是 1, 2, 3, 4, 5, 6 中的任何一个

而 random.randrange(start, stop, step) 则更为灵活。它源自Python内置的 range() 函数,遵循相同的“左闭右开”原则。这意味着它从 start 开始,到 stop 结束(但不包括 stop),并以 step 为步长在序列中随机选取一个数。

import random

# 从 0, 2, 4, 6, 8 中随机选择一个偶数
even_number = random.randrange(0, 10, 2)
print(f"随机偶数: {even_number}")  # 输出可能是 0, 2, 4, 6, 8

注意:randrange 的 step 参数默认为1,start 参数默认为0。因此 random.randrange(10) 等价于 random.randrange(0, 10, 1),生成 0 到 9 的随机整数。

两者的核心差异可以总结为下表:

特性random.randint(a, b)random.randrange(start, stop, step)
区间类型闭区间 [a, b]左闭右开区间 [start, stop)
核心功能在连续整数区间内随机取值在等差数列(由start, stop, step定义)中随机取值
灵活性较低,仅定义上下界较高,可控制序列的起始、终止和步长
典型用例模拟有明确上下限的离散事件(如骰子、抽奖编号)生成有规律的随机序列(如随机偶数、特定间隔的时间点)

理解了这些,我们就可以进入实战场景了。

2. 场景一:模拟离散事件与游戏开发

在游戏和模拟程序中,我们经常需要模拟具有明确、固定范围的结果。例如,骰子、扑克牌的点数,或者一个技能造成的固定区间内的伤害值。

在这个场景下,randint 通常是更直观、更不易出错的选择。

假设你正在编写一个简单的角色扮演游戏(RPG)的战斗模块。一个战士的普通攻击可能造成 15 到 25 点伤害。

import random

def warrior_attack():
    """模拟战士普通攻击伤害"""
    # 使用 randint,因为伤害范围是明确的闭区间 [15, 25]
    damage = random.randint(15, 25)
    return damage

# 进行10次攻击模拟
attack_log = [warrior_attack() for _ in range(10)]
print(f"战士攻击伤害记录: {attack_log}")
# 输出示例: [18, 25, 16, 22, 15, 19, 24, 20, 23, 21]

为什么这里用 randint 更好?

  • 意图清晰:代码 randint(15, 25) 直接、准确地表达了“伤害在15到25之间(含两端)”的业务逻辑。任何阅读代码的人都能立刻理解。
  • 避免偏移错误:如果使用 randrange,你需要写成 randrange(15, 26)。这里的 26 是一个“魔数”,它本身没有业务含义(伤害上限是25),容易在后续修改时被忽略或写错。

提示:当你的需求是“从m到n(包括m和n)的所有整数中随机选一个”时,请毫不犹豫地使用 randint(m, n)。它的语义最贴合人类自然语言描述。

那么 randrange 在这里完全没用吗?并非如此。考虑一个更复杂的游戏机制:一把具有“暴击”效果的武器,暴击时伤害会是基础伤害的1倍、1.5倍或2倍。

def critical_strike(base_damage):
    """计算暴击伤害倍数"""
    # 倍数选项为 1.0, 1.5, 2.0,对应索引 0, 1, 2
    multiplier_index = random.randrange(0, 3)  # 生成 0, 1, 2
    multipliers = [1.0, 1.5, 2.0]
    return base_damage * multipliers[multiplier_index]

# 假设基础伤害为20
base = 20
final_damage = critical_strike(base)
print(f"基础伤害 {base}, 暴击后伤害: {final_damage}")

这里使用 randrange(0, 3) 来生成列表索引是非常合适的,因为它完美对应了Python中列表索引从0开始、到len(list)结束(不包含)的惯例。

3. 场景二:生成特定序列与抽样

当我们需要从一个非连续的、有固定规律的整数序列中随机抽取时,randrange 的优势就无可动摇了。这是它设计初衷的完美体现。

一个典型的例子是:随机生成一个偶数,或者一个5的倍数。

import random

# 目标:生成一个 0 到 100 之间(包含100)的随机偶数
# 错误尝试(使用 randint):
# random.randint(0, 100) 可能产生奇数,需要额外判断和循环,效率低。

# 正确且高效的方法(使用 randrange):
random_even = random.randrange(0, 101, 2)  # 注意 stop 是 101,因为右开
print(f"0-100间的随机偶数: {random_even}")

# 生成一个 100 到 200 之间(不含200)的随机5的倍数
random_multiple_of_5 = random.randrange(100, 200, 5)
print(f"100-200间的随机5的倍数: {random_multiple_of_5}")

randrange 通过 step 参数,直接定义了我们要抽样的“候选集合”。它一次性、高效地完成了“生成序列”和“随机选择”两个步骤。

更复杂的应用:模拟时钟的随机时刻。 假设我们需要在每天上午9点到下午5点的工作时间内,随机安排一个会议开始时间,且会议只能整点或半点开始(即:9:00, 9:30, 10:00, ..., 16:30)。

我们可以把时间转换为以分钟为单位的数值:

def random_meeting_time():
    """生成工作时间内整点或半点的随机会议时间"""
    start_minute = 9 * 60  # 9:00
    end_minute = 17 * 60   # 17:00 (下午5点)
    step = 30              # 半小时间隔

    # 使用 randrange 在等差数列中选取
    random_minute = random.randrange(start_minute, end_minute, step)

    # 转换回小时和分钟
    hour = random_minute // 60
    minute = random_minute % 60
    return f"{hour:02d}:{minute:02d}"

print(f"随机会议时间: {random_meeting_time()}")

尝试用 randint 来实现同样的功能会非常笨拙,你需要先计算出所有可能的时间点列表,然后再随机选择,代码冗长且不高效。

4. 场景三:列表索引与数组操作

在数据处理和科学计算中,我们经常需要随机访问列表、数组的元素。Python的列表索引是从0开始的,并且切片操作是“左闭右开”。这使得 randrange 在与列表操作配合时,具有天然的协调性。

核心原则:当需要生成一个有效的列表索引时,优先考虑 randrange(0, len(list))。

import random

fruits = ['苹果', '香蕉', '橙子', '葡萄', '芒果', '草莓']

# 随机选择一个水果 - 最优雅的方式
random_index = random.randrange(len(fruits))  # 等价于 randrange(0, len(fruits), 1)
selected_fruit = fruits[random_index]
print(f"随机选择的水果: {selected_fruit}")

# 随机选择两个不重复的水果(简单抽样)
sampled_fruits = random.sample(fruits, 2)
print(f"随机抽样两个水果: {sampled_fruits}")

这里,randrange(len(fruits)) 生成的随机数范围是 0 到 len(fruits)-1,正好覆盖列表的所有有效索引。代码简洁且意图明确。

相比之下,如果使用 randint,你需要写成 randint(0, len(fruits)-1)。虽然结果正确,但多了一个 -1 的操作,增加了视觉复杂度和出错几率(比如忘记减1会导致索引越界)。

在NumPy等数组操作中的延伸: 虽然NumPy有自己的随机模块(np.random),但其设计思想是相通的。np.random.randint 的默认行为也是闭区间,但在指定数组大小时,我们通常想到的是“从0到size”,这时使用类似 randrange 思维的 np.random.choice 或结合 np.arange 会更直观。

import numpy as np

# 创建一个10x10的随机矩阵,并随机获取其中一个元素的位置
matrix = np.random.rand(10, 10)

# 随机选择一个行索引和列索引
row_idx = np.random.randint(0, matrix.shape[0])  # 需要显式指定 0 和 行数
col_idx = np.random.randint(0, matrix.shape[1])

# 如果用 randrange 的思路(虽然NumPy没有直接对应的),我们会更倾向于:
# row_idx = np.random.choice(matrix.shape[0])
# 这更接近“从序列中选一个”的直觉

selected_value = matrix[row_idx, col_idx]
print(f"在位置 ({row_idx}, {col_idx}) 的值为: {selected_value:.4f}")

这个场景的关键启示是:让你的随机数生成器与你的数据结构的索引规则保持一致。Python世界普遍使用从0开始、右开的索引,所以 randrange 常常是更“地道”的选择。

5. 场景四:算法测试与数据模拟

开发算法或进行数据分析时,我们经常需要生成大量的随机测试数据。此时,生成数据的效率和准确性至关重要。randint 和 randrange 的选择会影响数据生成的模式和边界条件。

案例:测试一个排序算法的正确性。 我们需要生成包含随机整数的列表进行测试。

import random, time

def generate_test_data_randint(size, low, high):
    """使用 randint 生成测试数据"""
    return [random.randint(low, high) for _ in range(size)]

def generate_test_data_randrange(size, low, high):
    """使用 randrange 生成测试数据,注意 high 需要+1以达到包含效果"""
    return [random.randrange(low, high + 1) for _ in range(size)]

# 测试两种方法的性能(简单对比)
test_size = 1000000
low, high = -100, 100

start = time.time()
data1 = generate_test_data_randint(test_size, low, high)
time_randint = time.time() - start

start = time.time()
data2 = generate_test_data_randrange(test_size, low, high)
time_randrange = time.time() - start

print(f"生成 {test_size} 个随机数耗时对比:")
print(f"  randint:   {time_randint:.4f} 秒")
print(f"  randrange: {time_randrange:.4f} 秒")
print(f"  数据范围验证 - randint 最大值: {max(data1)}, randrange 最大值: {max(data2)}")

在我的多次测试中,两者的性能差异微乎其微(randrange 偶尔略快一点点,但不足以作为决定因素)。因此,在这个场景下,选择的关键不在于性能,而在于语义清晰度和防错。

  • 如果你明确知道需要包含 high 这个边界值,使用 randint(low, high) 更直接,意图一目了然。
  • 如果你是从某个已有的、使用 range 的逻辑转换过来,或者你的 high 值本身就是一个计算得到的变量(比如 list_length - 1),那么使用 randrange(low, high+1) 可能更容易与上下文保持一致。

一个常见的误区与陷阱: 假设你有一个函数,接收参数 start 和 end,要求生成此区间的随机数,而调用方可能对“区间”是开是闭有不同理解。

# 模糊的接口设计,容易导致错误
def get_random_value_ambiguous(start, end):
    # 开发者A可能理解为闭区间,用了 randint
    # return random.randint(start, end)
    # 开发者B可能理解为右开区间,用了 randrange
    return random.randrange(start, end)  # 注意:这里 end 不会被包含!

# 清晰的接口设计
def get_random_value_inclusive(start, end):
    """获取 [start, end] 之间的随机整数"""
    return random.randint(start, end)

def get_random_value_exclusive_end(start, end):
    """获取 [start, end) 之间的随机整数"""
    return random.randrange(start, end)

注意:在编写供他人使用的函数或API时,务必在文档字符串中明确说明区间是开还是闭。更好的做法是像上面那样,通过函数名(如 _inclusive, _exclusive_end)直接体现其行为,从根本上避免歧义。

6. 场景五:密码学安全与随机性质量

这是一个高级但非常重要的场景。虽然 random.randint 和 random.randrange 都基于Python标准的伪随机数生成器(PRNG),但它们在生成特定范围数字时的内部实现细节,对于有高安全要求的应用(如生成加密密钥、令牌)来说,是绝对不够的。

首先,必须明确一个核心点:random 模块默认的生成器(Mersenne Twister)是伪随机的,不适合任何安全相关应用。

那么,在需要密码学安全的随机数时,我们该用什么?答案是 secrets 模块。

import secrets

# 生成一个安全的随机整数,范围在 [0, 255] (1字节)
secure_byte = secrets.randbelow(256)  # randbelow(n) 生成 [0, n) 的随机数
print(f"安全的随机字节值: {secure_byte}")

# 生成一个指定范围内的安全随机整数(闭区间)
def secure_randint_inclusive(low, high):
    """使用 secrets 模块生成 [low, high] 的安全随机整数"""
    # secrets.randbelow(n) 生成 [0, n) 的随机数
    # 为了得到 [low, high],我们先计算范围大小,然后偏移
    range_size = high - low + 1  # +1 是因为闭区间
    return low + secrets.randbelow(range_size)

# 生成一个在 [10, 20] 之间的安全随机数
secure_num = secure_randint_inclusive(10, 20)
print(f"安全随机数 (10-20): {secure_num}")

# 生成一个安全的随机偶数(类似 randrange 的功能)
def secure_randrange(start, stop, step=1):
    """生成 [start, stop) 之间步长为 step 的安全随机数"""
    # 计算范围内符合步长的元素个数
    count = (stop - start + step - 1) // step  # 向上取整除法
    if count <= 0:
        raise ValueError("无效的范围或步长")
    return start + secrets.randbelow(count) * step

secure_even = secure_randrange(0, 100, 2)
print(f"安全随机偶数 (0-100): {secure_even}")

secrets.randbelow(n) 与 random.randrange(n) 的类比:

  • secrets.randbelow(n):生成一个在 [0, n) 范围内的密码学安全的随机整数。这是 secrets 模块的基础构建块。
  • 你可以用 secrets.randbelow() 来构建出安全版本的 randint 和 randrange 功能,如上例所示。

关键结论:

  • 普通应用:使用 random.randint 或 random.randrange,根据前四个场景的指导进行选择。
  • 安全敏感应用(如生成密码、密钥、验证码、会话令牌):必须使用 secrets 模块。绝对不要使用 random 模块。

在实际项目中,我见过因为用 random 生成重置密码的令牌而导致的安全漏洞。所以,请务必根据应用场景严格区分这两个模块。

7. 性能微优化与底层原理探秘

对于绝大多数应用,randint 和 randrange 的性能差异可以忽略不计。但如果你处在需要每秒生成数百万个随机数的极端场景(如蒙特卡洛模拟),了解一点底层原理是有帮助的。

在CPython的实现中(我们可以粗略看一下):

  • random.randint(a, b) 本质上调用了 random.randrange(a, b+1)。
  • random.randrange(start, stop, step) 的逻辑相对复杂一些,需要处理步长和范围计算。

这意味着,在纯粹生成连续整数区间随机数时,randint 比 randrange 多了一次简单的加法(b+1),但这开销极小。randrange 在步长不为1时,有额外的计算开销。

一个有趣的性能对比实验:生成大量特定模式的随机数。

import random, timeit

# 场景A:生成大量 [0, 99] 的随机数
stmt_a1 = '[random.randint(0, 99) for _ in range(10000)]'
stmt_a2 = '[random.randrange(0, 100) for _ in range(10000)]'

time_a1 = timeit.timeit(stmt_a1, setup='import random', number=1000)
time_a2 = timeit.timeit(stmt_a2, setup='import random', number=1000)

print(f"生成 [0,99] 随机数 1000次(每次10000个):")
print(f"  randint(0, 99):   {time_a1:.2f} 秒")
print(f"  randrange(0,100): {time_a2:.2f} 秒")
print(f"  差异: {(time_a1 - time_a2)/time_a2*100:+.1f}%")

# 场景B:生成大量偶数(0, 2, 4, ..., 98)
stmt_b = '[random.randrange(0, 100, 2) for _ in range(10000)]'
# 用 randint 实现相同功能需要过滤,效率低下,这里不做对比。
time_b = timeit.timeit(stmt_b, setup='import random', number=1000)
print(f"\n生成 0-98 的随机偶数 1000次(每次10000个):")
print(f"  randrange(0,100,2): {time_b:.2f} 秒")

在我的测试环境中,randint 和 randrange 在连续区间上的性能差异通常在1%以内,属于统计噪声范围。因此,性能绝不应成为你在这两者之间做选择的首要依据。代码的清晰性、准确性和与上下文的契合度才是关键。

真正影响性能的是随机数生成本身的成本。如果你需要极致的性能,可以考虑:

  1. 使用 numpy.random 来生成大批量随机数(向量化操作)。
  2. 在循环外创建 random.Random() 实例,避免模块级函数查找的开销(微优化)。
  3. 对于非安全场景,可以考虑更快的伪随机算法,但这属于高级优化范畴。
# 微优化示例:使用局部Random实例
import random

def generate_fast(size):
    """使用局部Random实例生成随机数,可能稍快"""
    rng = random.Random()  # 可以传入固定种子以便复现
    return [rng.randint(0, 99) for _ in range(size)]

# 但对于大多数应用,直接使用 random.randint() 完全足够。

经过上面五个场景的剖析,从基础的游戏模拟到高级的安全应用,再到底层的性能考量,我们可以看到,randint 和 randrange 不是简单的“谁更好”的问题,而是“谁更合适”的问题。我的习惯是:当需求是简单的闭区间随机整数时,用 randint 让代码意图更直白;当需要处理步长、列表索引或与“右开”区间逻辑保持一致时,用 randrange。而在任何涉及密码、密钥或安全令牌的地方,我会立刻切换到 secrets 模块,这是不容妥协的底线。理解工具之间的细微差别,并在正确的场景下使用它们,这正是写出专业、健壮代码的秘诀之一。下次当你需要随机数时,不妨先花一秒钟想想:我到底需要什么样的随机?这个简单的思考习惯,能帮你避开很多潜在的坑。

Python randint()深度解析:原理、陷阱与生产级安全用法 随机数生成是编程基础概念,其核心在于伪随机数生成器(PRNG)的确定性原理与种子机制。Python的randint()函数虽接口简洁,但底层依赖Mersenne Twister算法,具有可复现性、线程共享状态及闭区间语义等关键特性。这些特性在教学演示中无害,却在Docker容器启动、多线程调度、空列表索引、AB测试分组等工程场景中引发ValueError崩溃、流量倾斜或安全漏洞。尤其当用于密码重置、抽奖系统等高敏感场景时,必须切换至secrets模块以保障加密安全性。本文结合17个真实生产案例,系统拆解ra 阅读详情

相关推荐

squirrel校园二手交易平台

squirrel校园二手交易平台 (适合寻找SSM项目练手的你。) 项目起源:   期末的课程设计,三人一组,我和两个舍友,一时起兴,决定做一个校园二手交易平台,一开始兴致与激情满满,可是后期时间上的冲突,让我们三个人对于这个项目有点累。   这个项目刚定题两天,BezosLee由于通过了360的网上在线笔试,收到了360公司的免费培训邀请,要去北京的360总部进行培训一周,值得庆...

K.SHI的博客 5万+

如何利用python产生随机数(randrange函数和random函数)

python提供了一个库模块,其中包含一些有用的函数用来生成(伪)随机数。该模块中的函数根据模块加载的日期和时间推导出初始种子值,因此每次运行程序时都会获得不同的种子值。这意味着你也会获得唯一的伪随机数序列。 常用的主要是以下两个函数:randrange和random。 1. randrange函数介绍 randrange函数从给定的范围中选择一个伪随机整数。它可以用一个、两个或三个参数,来确定一...

Hacker_Free的博客 1万+

QNX Neutrino 进程间通信编程之Message-passing/Pulse

Interprocess Communication(IPC,进程间通信)在QNX Neutrino从一个嵌入式实时系统向一个全面的POSIX系统转变起着至关重要的作用。IPC是将在内核中提供各种服务的进程内聚在一起的粘合剂。在QNX中,消息传递是IPC的主要形式,也提供了其他的形式,除非有特殊的说明,否则这些形式也都是基于本地消息传递而实现的。本篇幅主要讲解Message-passing和Pulse。

zhuwade的博客 3533

randint和randrange区别

random库中randint和randrange的区别

qq_65791992的博客 6627

【Proteus】NE555纯硬件实现LED呼吸灯效果,附源文件,效果展示

本设计通过NE555与三极管的巧妙配合,仅用基础元件实现了呼吸灯效果。核心在于利用RC积分电路将PWM信号转换为控制电压,并通过负反馈动态调节占空比。Proteus仿真验证了方案的可行性,读者可进一步优化参数或扩展功能,探索更多硬件设计可能性。

2201_75797484的博客 2983

Android定位权限全解析:从基础配置到后台持续定位的完整解决方案

本文全面解析Android定位权限体系,从基础配置到后台持续定位的完整解决方案。涵盖LocationManager和FusedLocationProviderClient等主流API的对比选型,详细讲解动态权限申请、精确定位与模糊定位的智能切换,以及Android 10+的后台定位适配策略。帮助开发者构建兼顾精准度与电量友好的定位方案,适用于导航、运动轨迹记录等多种场景。

weixin_29310605的博客 612

Python random randrange() 实例讲解 random.random、random.randint、random.choice、random.randrange

random 模块中使用了不同类型的函数来生成随机数,例如 random.random()、random.randint()、random.choice()、random.randrange(start, stop, width) 等等。

weixin_41147796的博客 4324

从零玩转GD32单片机CAN总线:手把手实战配置与源码解析

本文提供了一份基于GD32单片机的CAN总线实战入门指南。从硬件连接(GD32F103C8T6与TJA1050收发器)到软件配置,详细解析了CAN初始化、波特率计算、过滤器设置及中断收发等核心源码。通过手把手的回环测试示例与常见问题排查,帮助开发者快速掌握CAN总线通信的关键配置与调试技巧。

g5h6i7j的博客 481

Python random模块(randrange、choice、randint、sample)

Python random 模块允许生成随机数。生成的数字是一系列伪随机数,它们基于所使用的函数。random 模块中使用了不同类型的函数来生成随机数,例如 random.random()、random.randint()、random.choice()、random.randrange(start, stop, width) 等等。在这里,我们将讨论随机模块的 randrange() 函数。randrange() 函数用于在其参数中的指定范围之间生成一个随机数。

不曾走远的博客 5100

深度学习模型设计的方法和技巧

设计神经网络模型是一个迭代的过程,需要不断试验和调整各个组成部分,以达到最佳性能。同时,遵循良好的工程实践,如模块化设计、版本控制、文档记录等,也是成功的关键。

xw555666的博客 4027

MATLAB小白也能搞定!BCT脑网络分析工具箱安装与入门指南

本文为零基础用户提供了一份详尽的BCT脑网络分析工具箱安装与入门指南。从MATLAB环境配置、BCT工具箱下载与路径添加,到连接矩阵构建、节点度与聚类系数等基础指标计算,手把手带领神经科学研究者跨越编程门槛,快速掌握脑影像数据分析的核心流程。

threejs5artist的博客 1092

pythonrandrange_range()、np.arange()和np.random相关总结

range()和xrange()函数在 python 2.x 版本中,同时存在range()和xrange()函数,其中,range()返回值是一个列表,xrange()返回值是一个迭代器;在 python 3.x 版本中,取消了xrange()的定义,仅保留了range()函数,且range()函数的返回值也改为迭代器;xrange和range的语法格式相同;语法:格式1: range(stop...

weixin_39843847的博客 565

【Coze搞钱实战】24. 从零实现精准用户画像:Coze+企业微信打造智能导购推送系统(附完整代码)

电商运营中,“客服重复询问用户需求、无法精准推荐”是转化率低的核心痛点——日均200人次咨询,73%的问题是重复的,首单转化率仅14%。本文基于Coze平台sys_uuid用户识别功能、企业微信API与多维表格,打造“用户行为→自动打标→标签存储→智能推送”全链路方案:通过分类分层标签体系捕捉用户偏好,Coze自动识别用户并打标,飞书多维表格存储标签数据,企业微信触发个性化推送。实操后可使客服重复询问率下降62%,意向客户转化率提升81%,首单转化率提升64%。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 543

关于python函数range(),xrange(),randrange(),randint()

1. range() python range() 函数可创建一个整数列表,一般用在 for 循环中。 函数语法 range(start, stop[, step]) 返回值:range 参数说明: start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5); stop: 计数到 stop 结束,**但不包括 stop。**例如:range(0, ...

weixin_42999937的博客 5739

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Python随机数生成实战:深入解析randint与randrange的差异与应用场景

本文深入解析Python中random.randint与random.randrange的差异与应用场景,帮助开发者正确选择随机数生成方法。通过实际案例对比两者的区间定义、步长控制及性能表现,提供抽奖系统、游戏开发等场景的最佳实践指南,避免常见错误。

weixin_28746223的博客 141

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

别再混淆了!Python中random.randint和random.randrange的详细区别与使用技巧

本文详细解析了Python中random.randint与random.randrange的核心区别。randint生成闭区间随机整数,包含两端点;randrange遵循左闭右开原则,且支持步长参数。文章通过对比表格、代码示例和实战场景,帮助开发者根据语义清晰选择正确函数,避免常见的边界错误。

open4的博客 340

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

python--随机函数(random,uniform,randint,randrange,shuffle,sample) random()

python–随机函数(random,uniform,randint,randrange,shuffle,sample) random() random()方法:返回随机生成的一个实数,它在[0,1)范围内 运用random()方法的语法: import random #random()方法不能直接访问,需要导入random模块,然后通过random静态对象调用该方法 random.random...

小生不才 711

[Python学习日记-49] Python 中的随机数模块 —— random

程序中有很多地方需要用到随机字符,例如登录网站的随机验证码,而这些功能可以通过 random 模块来很容易生成随机字符串,然后实现这些功能,下面来一起学习一下 random 模块的一些常用方法的介绍吧。

JovaZou的成长之路 6344

python生成五位数随机数_Python随机数模块总结

随机数在日常的应用开发中,使用的比较多,比如抽奖游戏,如果你不依靠随机数,就会变的由规律,容易被人发现规律。比如我们的斗地主游戏,它的发牌程序也会随机给每个人发牌,还有一些加密使用的也很广泛,下面给大家分享下python中的随机数模块中相关随机函数的使用。1、 random模块使用1、导入模块2、randint函数使用每次打印的结果都在1到10之间的随机整数,包括1和10在内。3、randrang...

weixin_32643811的博客 5607

python生成50个随机数_Python内置random模块生成随机数的方法

本文我们详细地介绍下两个模块关于生成随机序列的其他使用方法。随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等。Python内置的random模块提供了生成随机数的方法,使用这些方法时需要导入random模块。import random下面介绍下Python内置的random模块的几种生成随机数的方法。1、random.random()...

weixin_39639518的博客 4433

php生成指定范围随机数两位小数_详解Python随机数的生成

(点击上方快速关注并设置为星标,一起学Python)来源:https://juejin.im/post/5cefccb0e51d455d850d3a85随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等。Python内置的random模块提供了生成随机数的方法,使用这些方法时需要导入random模块。importrandom...

weixin_35733586的博客 1038

python生成一组随机数_Python生成随机数的方法

这篇文章主要介绍了Python生成随机数的方法,有需要的朋友可以参考一下如果你对在Python生成随机数与random模块中最常用的几个函数的关系与不懂之处,下面的文章就是对Python生成随机数与random模块中最常用的几个函数的关系,希望你会有所收获,以下就是这篇文章的介绍。random.random()用于生成用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。如果a ...

weixin_39889597的博客 1301

python random库生成伯努利随机数的方法_详解Python基础random模块随机数的生成

随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等。Python内置的random模块提供了生成随机数的方法,使用这些方法时需要导入random模块。import random下面介绍下Python内置的random模块的几种生成随机数的方法。1、random.random() 随机生成 0 到 1 之间的浮点数[0.0, 1.0) 。...

weixin_39667452的博客 2452

python标准随机数生成模块_详解Python基础random模块随机数的生成

随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等。Python内置的random模块提供了生成随机数的方法,使用这些方法时需要导入random模块。import random下面介绍下Python内置的random模块的几种生成随机数的方法。1、random.random() 随机生成 0 到 1 之间的浮点数[0.0, 1.0) 。...

weixin_36264801的博客 527
上一篇: HuggingFace Evaluate库实战:5分钟搞定模型评估与数据集分析
下一篇: PyCharm专业版实战:5分钟搞定Docker容器内Python3.9开发环境(含SSH避坑指南)
wasm7browser
博客等级 码龄4年 32粉丝 1536原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值