创建随机数组字符串类型

本文关键字:类型 字符串 数组 随机 创建 | 更新日期: 2023-09-27 18:06:25

我正在制作一个程序,生成人,精灵和其他种族等的描述。

它涉及到很多数组和列表,从其中选择一个单词,然后放入一个句子。一个示例数组如下所示:

public string[] hairfront = {
        "side swept bangs", "straight bangs", "choppy bangs", "wispy bangs",
        "parted straight bangs", "parted choppy bangs", "blunt single length bangs",
        "bangs shorter on one side than the other", "pixi cut bangs"}

然后随机类将选择一个数字并返回相应的字符串,无论我有RAE(array name)

示例:"The person has " + RAE(hairfront)

我想让RAE作为一个数组类型,它将有一个方法,选择一个随机字符串放入句子。

下面的伪代码描述了我想要的代码的样子:

new RAE(hair)={ "blah", "brown", "long"}
Public string generate_description "the persons hair is" RAE(hair)
it will become "the persons hair is brown"

创建随机数组字符串类型

就像你说的,你可以把它包装在一个类中:

public class RandomStringGenerator
{
   private string[] data;  //Data holder
   private Random rng = new Random(); //Class level so it seeds once
   public RandomStringGenerator(string[] startData)
   {
       data = startData;
   }
   public string GetRandomElement()
   {
       return data[rng.Next(0, data.Length)];
   }
}

将初始化的数组传递给它,然后在每次需要新元素时调用GetNextElement:

RandomArray hairRandomizer = new RandomArray (new string[] { "side swept bangs", "straight bangs", "choppy bangs", "wispy bangs", "parted straight bangs", "parted choppy bangs", "blunt single length bangs", "bangs shorter on one side than the other", "pixi cut bangs"});
string myHair = hairRandomizer.GetNextElement();

正如AlexeiLevenkov所指出的,同时创建很多这些是一个糟糕的选择。如果您这样做,您需要在更高的级别创建Random对象并将其传入:

public class RandomStringGenerator
{
   private string[] data;  //Data holder
   private Random rng; //Not instantiated since we pass it in
   public RandomStringGenerator(string[] startData, Random rngToUse)
   {
       data = startData;
       rng = rngToUse;
   }
   ... //Same as before
}