def random_fullrank_matrix_distinct_singular_value(l): A = torch.randn(l, l) u, _, v = A.svd() s = torch.arange(1, l + 1).mul_(1.0 / (l + 1)) return u.mm(torch.diag(s)).mm(v.transpose(0, 1))