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

Python 在指定范围内生成N个唯一的随机整数,python,pandas,numpy,dataframe,random,Python,Pandas,Numpy,Dataframe,Random,在包含零的(1,80)数据帧中,我想在随机位置将N(=30)值设置为1,因此我尝试了以下方法: df = pd.DataFrame( 0, index = range(1), columns = range(80) ) df[ np.random.randint(80, size=30) ] = 1 但如果我检查,我得到的是25个“一”,而不是30个: ( df.loc[0] == 1 ).sum() 25 出了什么问题以及如何解决此问题?生成的随机整数不必是唯一的。因此,相同的索引被多次设

在包含零的(1,80)数据帧中,我想在随机位置将N(=30)值设置为1,因此我尝试了以下方法:

df = pd.DataFrame( 0, index = range(1), columns = range(80) )
df[ np.random.randint(80, size=30) ] = 1
但如果我检查,我得到的是25个“一”,而不是30个:

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

出了什么问题以及如何解决此问题?

生成的随机整数不必是唯一的。因此,相同的索引被多次设置为1。我相信你每次运行它都会得到不同的总数

您可以使用
random.sample(范围(0,80),30)
在该范围内生成30个唯一索引


生成的随机整数不必是唯一的。因此,相同的索引被多次设置为1。我相信你每次运行它都会得到不同的总数

您可以使用
random.sample(范围(0,80),30)
在该范围内生成30个唯一索引


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

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