Skip to main content
 首页 » 编程设计

python之生成指定范围内的N个唯一随机整数

2025年05月04日19xxx_UU

在包含零的 (1,80) 数据框中,我想在随机位置将 N (=30) 个值设置为 1,所以我尝试了这个:

df = pd.DataFrame( 0, index = range(1), columns = range(80) ) 
df[ np.random.randint(80, size=30) ] = 1 

但是如果我检查,我会得到 25 个“1”而不是 30 个:

( df.loc[0] == 1 ).sum() 
25 

出了什么问题,我该如何解决?

请您参考如下方法:

这是因为对 np.random.randint 的调用可能会两次返回相同的值,而这种冗余被 pandas 消除了(检查 df[[1, 1]])。因此,您可以使用 np.random.choice(80, 30, replace=False)。