I cannot reproduce the issue using:
def add_noise_sp(image,sd,amount=0.2):
    np.random.seed(seed=sd)

    low_clip = 0.13
    std = 0.31

    image = np.asarray(image)
    out = image.copy()
    p = amount
    q = 0.5 
    flipped = np.random.choice([True, False], size=image.shape,
                                   p=[p, 1 - p])
    salted = np.random.choice([True, False], size=image.shape,
                                  p=[q, 1 - q])
    peppered = ~salted
    out[flipped & salted] = low_clip-2*std
    
    return torch.tensor(out)

class SyntheticNoiseDatasetsalttr(torch.utils.data.Dataset):
    def __init__(self, data,mode='train'):
        self.mode = mode
        self.data = data
        self.s = 1
        
    def __len__(self):
        return len(self.data)
    
    def __getitem__(self, index):
        img = self.data[index][0]
        self.s = self.s + 1 
        return add_noise_sp(img,self.s), img
    
mnist_train = torchvision.datasets.MNIST(
    root='./data', transform=torchvision.transforms.ToTensor())
noisy_mnist_train = SyntheticNoiseDatasetsalttr(mnist_train, 'train')
train_set, val_set = torch.utils.data.random_split(noisy_mnist_train, [55000, 5000], generator=torch.Generator().manual_seed(42))

torch.manual_seed(123)
bt = torch.utils.data.DataLoader(val_set,batch_size=1, shuffle= True)
bt =next(iter(bt))
noisy,clean = bt
plt.imshow(noisy.squeeze(), cmap='gray')

and get always the same output by rerunning the entire code.
I don’t know which part you are rerunning, but make sure to reinitialize the dataset.