2010-10-16 69 views
0

我有一个问题找到一个很好的算法来生成一个随机字母。我试着用这个:字母发生器

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 

对此事任何意见或建议?

回答

1

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

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

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

1

您几乎可以肯定地创建大量Random的实例,而不是对所有调用使用相同的实例。很难肯定地说,因为您尚未显示如何使用该方法或宣布random。我也怀疑这就是你使用的代码,因为它只会产生'a' - 'z',而不是'C'或'G'。

阅读my article on random number generation了解更多细节,但基本思想是使用Random的一个实例。