使用随机决策

时间:2015-07-11 15:28:04

标签: c# if-statement random generator

我正在尝试创建一个随机选择制作者。我希望我的程序选择一个随机数,然后将其应用于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")
}

等...

有人可以帮忙吗。

3 个答案:

答案 0 :(得分:1)

这只是初始化Random,并使用一系列数字调用Next方法。

原始代码问题:

  1. 您使用的是next而不是NextC#是区分大小写的。
  2. 您没有存储Next操作的结果。
  3. ToString是多余的,无需转发string
  4. <强>代码:

    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

答案 1 :(得分:1)

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

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

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);

答案 2 :(得分:0)

你必须将random.Next的输出存储在这样的变量中。

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");
}