我在找到生成随机字母的好算法时遇到了问题。我试过这个:
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
有关此问题的任何想法或建议吗?
答案 0 :(得分:1)
您几乎肯定会为Random
创建大量实例,而不是为所有调用使用相同的实例。由于您没有显示该方法的使用方式或声明random
的位置,因此很难确定。我也怀疑这是你正在使用的代码,因为它只会产生'a' - 'z',而不是'C'或'G'。
阅读my article on random number generation了解更详细的信息,但基本思路是使用Random
的一个实例。
答案 1 :(得分:1)
听起来你在每次调用方法之前都在实例化random
对象的新实例。
Random
类takes its seed from the system clock的默认值,这意味着如果您连续创建多个实例,它们将使用相同的种子,这意味着它们将生成相同的序列随机数。
您应该创建Random
类的单个实例,并在每次调用方法时重用相同的实例。