如何在C#中从预定义字符串列表生成随机字符串?
解决方案
你需要用Random.Next()方法生成一个有效范围内的随机索引,再通过索引从列表中取出对应的字符串。另外注意不要每次调用方法都实例化Random,否则短时间内多次调用可能生成重复的随机数。
修正后的完整代码
// 把Random实例声明为类的成员变量,避免重复实例化导致的重复随机数 private Random rnd = new Random(); string RandomPowerSentence() { List<string> powerStrings = new List<string>() { "You are kind!", "You are beautiful!", "You are smart!" }; // 生成0到列表长度-1之间的随机索引 int randomIndex = rnd.Next(powerStrings.Count); // 通过索引获取随机字符串 return powerStrings[randomIndex]; }
关键说明
Random.Next(int maxValue):生成一个大于等于0且小于maxValue的随机整数,这里传入powerStrings.Count,刚好覆盖列表的所有有效索引(列表索引从0开始)。- 把
Random实例放在方法外:如果每次调用方法都new Random(),系统会用当前系统时钟作为种子,短时间内多次调用会生成相同的随机序列,导致每次返回的字符串都一样。
内容的提问来源于stack exchange,提问作者Lee Shapira
相关产品推荐
相关产品推荐

