Je ne demande pas si ceux-ci sont vraiment aléatoires. Je voulais juste savoir si deux utilisateurs frappent la même page en même temps peuvent-ils obtenir le même nombre aléatoire? Je pense que si je cours ceci sur un serveur multicore je générerai le même nombre de randon une bonne quantité de temps dû à la synchronisation ou à d'autres raisons?Ces numéros aléatoires sont-ils 'sûrs'
public static class SBackend
{
static Random randObj = null;
public static void init()
{
randObj = new Random((int)DateTime.Now.ToBinary());
runFirstTime();
}
public static long getRandomId()
{
long randNum = (long)randObj.Next() << 33;
randNum |= (uint)randObj.Next() << 2;
randNum |= (uint)randObj.Next() & 3;
return randNum;
}
}
Salut AcidZombie, pourquoi avez-vous besoin de garantir que deux personnes n'obtiennent pas le même nombre aléatoire? Quel est le problème sous-jacent que vous essayez de résoudre? Etes-vous également dans ASP.Net?(comme vous référez aux pages dans votre question) –
Je l'employais pour deux choses mais je réalise que je peux employer une valeur linéaire pour l'un des. J'utilise actuellement ceci pour produire un Id de logid. L'utilisateur a un cookie avec le nom d'utilisateur et un httpcookie avec le loginId. Si quelqu'un peut deviner un identifiant de connexion spécifique à un utilisateur, il peut se connecter comme lui. Notez que ceci change chaque fois que l'utilisateur se connecte et met à 0 lors de la déconnexion –