We follow Fang et al. [1]} to distribute the training data points in a dataset among clients.
Assuming there are \(M\)  classes in a dataset.
We randomly split the clients into \(M\)  groups.
A training data point with label \(m\)  is assigned to group \(m\)  with probability \(q\) >0 and to any other group with probability (1-\(q\) )/(\(M\) -1).
Within the same group, data are uniformly distributed to each client.
\(q\) , as a bias probability, controls the distribution difference of the local training data.
If \(q\) =1/\(M\) , the local training data are independent and identically distributed (IID), otherwise the local training data are Non-IID.
A larger \(q\)  denotes a higher level of Non-IID among the local training data.
We will set \(q\) >1/\(M\)  to simulate the Non-IID settings.
