RandomNumber method returns same number every time

2019-02-22 04:42发布

问题:

I am trying to generate a different random number every time my RandomNumber method is called from within my for loop. Right now, it returns the same number every time.

This is my RandomNumber method:

    private int RandomNumber(int min, int max)
    {
        Random random = new Random();
        return random.Next(min, max);
    }

This is the context I am using it in: (it's a little messy just because I have been messing with trying to get it to work....)

        for (int i = 0; i < charsRaw.Length; i++)
        {
            int max = charsRaw.Length - 1;
            int rand = 0;
            rand = RandomNumber(0, max);

            charsNew[i] = charsRaw[rand];
            text2 += charsNew[i];

         }

I can't seem to get it to return a different value every time it is called with the for loop.

Although, when i stick a MessageBox.Show(rand.ToString()) after text2 += charsNew[i], it gives me a different value every time and works the way I intended it to. Strange.

Thanks! Eric

回答1:

Instantiate Random once. Call .Next() multiple times on the same instance.

MSDN:

The random number generation starts from a seed value. If the same seed is used repeatedly, the same series of numbers is generated

If you do wish to repeatedly instantiate Random, use a different seed each time.



回答2:

There's nothing saying a truly random sequence can't be the same number each time! :-) There is a small probability it's legit so you can never truly be sure. ducks for cover



标签: c# random