【发布时间】:2009-07-06 07:58:08
【问题描述】:
我不是在问这些是否真的是随机的。我只是想知道如果两个用户同时点击一个页面,他们能得到相同的随机数吗?我在想,如果我在多核服务器上运行它,由于同步或其他原因,我会在很长一段时间内生成相同的随机数吗?
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;
}
}
【问题讨论】:
-
嗨 AcidZombie,为什么你需要保证两个人不会得到相同的随机数?您要解决的根本问题是什么?你也在 ASP.Net 中吗? (当您提到问题中的页面时)
-
我将它用于两件事,但我意识到我可以将线性值用于其中之一。我目前正在使用它来生成一个 logid Id。用户有一个带有用户名的 cookie 和一个带有 loginId 的 httpcookie。如果任何人都可以猜到用户拥有的特定 loginId,他们就可以以他们的身份登录。请注意,每次用户登录时都会更改此设置并在注销时设置为 0