随机决策

本文关键字:决策 随机 | 更新日期: 2023-09-27 18:02:24

我正在尝试创建一个随机决策器。我想让我的程序选择一个随机数然后把它应用到if中。像这样-

Random random = new Random();
random.next(0, 10).ToString());
if (random == 1)
{
messagebox.show("Good Joke")
}
else if(random == 2)
{
messagebox.show("Terrible Joke")
}

等等……

随机决策

这只是初始化Random,并使用一个数字范围调用Next方法。

原代码问题:

  1. 您正在使用next而不是Next, C#是区分大小写的。
  2. 没有存储Next操作的结果。
  3. ToString是多余的,不需要强制转换为string

代码:

var random = new Random();
int number = random.Next(0, 10);
// If you gonna use alot of conditions like this, a better solution will be to use: switch
if (number == 1)
{
    // Do Something
}
else if (number == 2)
{
    // Do Something else
}

。NET Fiddle Link

有几种方法可以做到这一点。以下是其中的三个。

第一种方法是创建消息数组。

string[] messages = new string[]
{
    "Good Joke",
    "Terrible Joke"
};
// ...
MessageBox.Show(messages[random.Next(messages.Length)]);

第二种方法是使用字典,这样你可以在运行时轻松地添加/删除条目。请确保键与索引匹配。

Dictionary<int,string> messages = new Dictionary<int,string>()
{
    { 0, "Good Joke" }
    { 1, "Terrible Joke" }
};
// ...
MessageBox.Show(messages[random.Next(messages.Count)]);

最后你可以使用一个switch语句。

string msg = string.Empty;
switch (random.Next(2)) // The amount of cases ...
{
    case 0: msg = "Good Joke"; break;
    case 1: msg = "Terrible Joke"; break;
}
MessageBox.Show(msg);

您必须存储random的输出。接下来是这样的变量。

Random random = new Random();
var val = random.Next(0, 10);
if (val == 1)
{
    MessageBox.Show("Good Joke");
}
else if(val == 2)
{
    MessageBox.Show("Terrible Joke");
}