C#随机函数返回相同的值

Chr*_*ris 2 c# random

可能重复:
随机数生成器不按我计划的方式工作(C#)

我做了一个生成随机数的简单例程

private int randomNumber()
{
    Random random = new Random();
    int randomNum = random.Next(0, 100);
    Response.Write(randomNum);
    return randomNum;
}
Run Code Online (Sandbox Code Playgroud)

我以相同的方式在我的page_load中的两个不同阶段调用它:

// A/B Test
if (randomNumber() <= 50)
{
...
Run Code Online (Sandbox Code Playgroud)

我发现,两个数字总是一样的.有任何想法吗?

Dav*_*ile 12

创建Random实例时,它会以当前时间播种.因此,如果您同时创建其中的几个,它们将生成相同的随机数序列.您需要创建一个单独的实例Random并使用它.


Ili*_*a G 7

new Random()用当前时间初始化为种子.如果你足够快地调用它,那么种子将是相同的,因此Next()调用的结果也是如此.