You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python随机生成代码,实现1-100区间动态随机整数输出?

解决混合固定值与区间随机整数的生成问题

你的问题出在np.random.choice的参数a初始化逻辑上:random.randint(0, 100)只会在创建数组a时执行一次,生成一个固定整数,后续np.random.choice每次选中第二个选项时,只会重复使用这个固定值,所以30%的字段都是同一个数。

下面提供两种可行的修改方案:

方案一:用标记数组+批量替换(高效适合大数据量)

先通过概率生成标记数组,再把需要替换的位置批量生成随机整数:

import numpy as np
import pandas as pd

# 生成70%为0、30%为1的标记数组
marks = np.random.choice(a=[0, 1], size=100, p=[0.7, 0.3])
# 批量生成1-100的随机整数,再用where替换标记为1的位置
values = np.where(marks == 1, np.random.randint(1, 101, size=100), 0)
# 转为DataFrame
df_categories = pd.DataFrame(values, columns=['number'])

这里np.random.randint(1, 101, size=100)直接生成100个独立的随机整数,通过np.where精准替换到需要的位置,保证30%的数值都是不同的随机数。

方案二:逐元素生成(逻辑直观适合小数据量)

用列表推导式逐个判断概率并生成数值,每次生成随机数都会重新计算:

import pandas as pd
import random

# 列表推导式生成每个元素
values = [0 if random.random() < 0.7 else random.randint(1, 100) for _ in range(100)]
# 转为DataFrame
df_categories = pd.DataFrame(values, columns=['number'])

这种方式逻辑简单易懂,每个元素的生成都是独立判断,不会出现固定值问题。

内容的提问来源于stack exchange,提问作者silent_hunter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 19:05:38