Mouais, ça n'est pas très clair.
state[0] correspond à l'ancienne valeur retournée par rand() ? Dans ce cas, à quoi correspond l'opération & 0x7fffffff, une multiplcation, un modulo ?
D'autre part, j'ai l'impression que rand() doit utiliser plusieurs valeurs retournées précédemment. En effet, quand une même valeur est donnée plusieurs fois, la valeur retournée ensuite n'est pas la même.