第一种:
msg = torch.randint(0, 2, (batch_size, bit_length))
第二种:
message = torch.zeros((B, self.bit_num))
pos_p = torch.rand((B, self.bit_num))
message[pos_p > 0.5] = 1
第二种 相比第一种的优势就是可以自己控制生成0和1的概率。也就是当前的写法 pos_p > 0.5
表明是均匀分布的概率。因此当前的例子两种写法是等价的。
第三种写法
def generate_random_fingerprints(bit_length, batch_size=4):
z = torch.zeros((batch_size, bit_length), dtype=torch.float).random_(0, 2) #生成整数值0,1
return z
random_()
用一个离散均匀分布[from, to - 1]
来填充当前自身张量.