相关疑难解决方法(0)

随机数生成 - 返回相同的数字

可能重复:
c# - 重复获取相同的随机数
随机数生成器不按照我计划的方式工作(C#)

我有一个构建int队列的方法:

public Queue<int> generateTrainingInts(int count = 60)
    {
        Queue<int> retval = new Queue<int>();

        for (int i = 0; i < count; i++)
        {
            retval.Enqueue(JE_Rand.rInt(2001, 100));
        }

        return retval;
    }
Run Code Online (Sandbox Code Playgroud)

JE_Rand.rInt()只是一个委托给Random类函数的函数:

public static int rInt(int exclUB, int incLB = 0)
    {
        Random rand = new Random(DateTime.Now.Millisecond);
        int t = rand.Next(incLB, exclUB);
        rand = null;            
        return t;
    }
Run Code Online (Sandbox Code Playgroud)

但是当我调用generateTrainingInts时,每次都会将相同的数字排入队列.但是,如果我更改rInt以使用Random类的静态实例,而不是本地实例(具有上面定义的函数作用域),那么它似乎正常工作(排队随机整数).有人知道为什么会这样吗?

编辑:亲爱的答案者没有彻底阅读我的问题,就像你们中的一些人指出的那样,我正在寻找一个很好的解释为什么会发生这种情况.我不是在寻找同一数字生成问题的解决方案,因为我已经解决了,就像我上面所说的那样.感谢你的热情:)我真的只想了解这样的事情,因为我的第一次实现对我来说在概念上更有意义.

c# random

11
推荐指数
2
解决办法
3万
查看次数

为什么这个方法每次都返回相同的随机字符串?

我需要创建一个独特的块来测试我正在处理的不同项目.

所以我创建了一个简单的程序来生成一个X长度的随机字符串.

问题是,如果我调用它一次,我得到一个随机字符串,如果我再次调用它(例如在for循环中)我得到相同的字符串用于循环的整个执行.

我有一种感觉,它被缓存或者其他东西,但我不知道.net做到了这一点,我只是在这一点上感到困惑.

调用代码:

    StreamWriter SW = new StreamWriter("c:\\test.txt");
    int x = 100;
    while (x >0)
    {
        SW.WriteLine(RandomString(20));
        x--;
    }
Run Code Online (Sandbox Code Playgroud)

这是方法:

private static string RandomString(int Length)
{
    StringBuilder sb = new StringBuilder();
    Random randomNumber = new Random();

    for (int i = 0; i <= Length; ++i)
    {
        int x = randomNumber.Next(65, 122);
        sb.Append(Convert.ToChar(x));
    }
    return sb.ToString();        
}
Run Code Online (Sandbox Code Playgroud)

这是输出:

"VEWMCQ`Fw]TvSFQawYnoB
VEWMCQ`Fw]TvSFQawYnoB
VEWMCQ`Fw]TvSFQawYnoB
VEWMCQ`Fw]TvSFQawYnoB
VEWMCQ`Fw]TvSFQawYnoB
VEWMCQ`Fw]TvSFQawYnoB
..................
VEWMCQ`Fw]TvSFQawYnoB
VEWMCQ`Fw]TvSFQawYnoB
VEWMCQ`Fw]TvSFQawYnoB
VEWMCQ`Fw]TvSFQawYnoB
VEWMCQ`Fw]TvSFQawYnoB"
Run Code Online (Sandbox Code Playgroud)

那么是什么让我觉得Random.next()会一直返回一个新的随机数?

.net c# random text char

5
推荐指数
2
解决办法
1677
查看次数

标签 统计

c# ×2

random ×2

.net ×1

char ×1

text ×1