信件发生器

时间:2010-10-16 12:28:41

标签: c# random

我在找到生成随机字母的好算法时遇到了问题。我试过这个:

public static char GetLetter()
    {
        int num = random.Next(0, 26);
        char letter = (char)('a' + num);

        return letter;
    }

我在互联网上找到了它,但它生成了相同的字母,或者最多两个字母。例如,如果我想使用上面的代码用随机字母填充4x4矩阵,我得到:

C C C C
C C C C
C C G G
G G G G

有关此问题的任何想法或建议吗?

2 个答案:

答案 0 :(得分:1)

您几乎肯定会为Random创建大量实例,而不是为所有调用使用相同的实例。由于您没有显示该方法的使用方式或声明random的位置,因此很难确定。我也怀疑这是你正在使用的代码,因为它只会产生'a' - 'z',而不是'C'或'G'。

阅读my article on random number generation了解更详细的信息,但基本思路是使用Random的一个实例。

答案 1 :(得分:1)

听起来你在每次调用方法之前都在实例化random对象的新实例。

Randomtakes its seed from the system clock的默认值,这意味着如果您连续创建多个实例,它们将使用相同的种子,这意味着它们将生成相同的序列随机数。

您应该创建Random类的单个实例,并在每次调用方法时重用相同的实例。