为WP7选择C#中的随机字符串

为WP7选择C#中的随机字符串,c#,visual-studio,visual-studio-2010,windows-phone-7,random,C#,Visual Studio,Visual Studio 2010,Windows Phone 7,Random,我正在制作一个WP7应用程序,当用户点击图像时,它会随机决定他们将得到什么。 现在,我有以下代码: 字符串firstdoor=”“ 字符串seconddoor=”“ string或=“” 及 string prize1=“到夏威夷度假,所有费用都包括在内” string prize2=“用过的胶水棒” string prize3=“一堆狗屎” string prize3=“到欧洲度假,所有费用都包括在内” string prize3=“百万美元” string prize3=“空白CD” str

我正在制作一个WP7应用程序,当用户点击图像时,它会随机决定他们将得到什么。 现在,我有以下代码:
字符串firstdoor=”“
字符串seconddoor=”“
string或=“”
string prize1=“到夏威夷度假,所有费用都包括在内”
string prize2=“用过的胶水棒”
string prize3=“一堆狗屎”
string prize3=“到欧洲度假,所有费用都包括在内”
string prize3=“百万美元”
string prize3=“空白CD”
string prize3=“临时纹身”
string prize3=“镍”
string prize3=“dime”
及
我想做的是将
s随机分配给
奖品
s。
例如,当用户点击图像时,
dime
被分配给
thirddoor
nickel
被分配给firstdoor,
million$s
被分配给
secondoor
以下是对我来说最有意义的步骤(不打算为您编写所有代码):

  • 将所有奖品字符串放入一个数组中

  • 生成三个介于0和最大奖品数之间的随机数

  • 用每个随机数从奖品数组中为每个门分配奖品

  • 利润

  • 编辑

    实际上,这里有一些代码可以帮助您:

    var randomGenerator = new Random();
    
    string[] prizes = { "vacation to Hawaii with all expenses covered",
                        "used glue stick",
                        "pile of dog dung",
                        "vacation to Europe with all expenses covered" };
    
    string firstDoor = prizes[randomGenerator.Next(prizes.Length)];
    string secondDoor = prizes[randomGenerator.Next(prizes.Length)];
    string thirdDoor = prizes[randomGenerator.Next(prizes.Length)];
    

    以下是对我来说最有意义的步骤(不打算为您编写所有代码):

  • 将所有奖品字符串放入一个数组中

  • 生成三个介于0和最大奖品数之间的随机数

  • 用每个随机数从奖品数组中为每个门分配奖品

  • 利润

  • 编辑

    实际上,这里有一些代码可以帮助您:

    var randomGenerator = new Random();
    
    string[] prizes = { "vacation to Hawaii with all expenses covered",
                        "used glue stick",
                        "pile of dog dung",
                        "vacation to Europe with all expenses covered" };
    
    string firstDoor = prizes[randomGenerator.Next(prizes.Length)];
    string secondDoor = prizes[randomGenerator.Next(prizes.Length)];
    string thirdDoor = prizes[randomGenerator.Next(prizes.Length)];
    

    假设您不想重复任何奖品,解决方案会稍微复杂一些,但您可以使用一些Linq和随机的小把戏:

        var prizes = new string[] {
            "vacation to Hawaii with all expenses covered",
            "used glue stick",
            // etc
            "dime"            
        };
    
        var rand = new Random();
    
        var result = (from prize in prizes
                      orderby rand.NextDouble()
                      select prize).Take(3).ToArray();
    

    假设您不想重复任何奖品,解决方案会稍微复杂一些,但您可以使用一些Linq和随机的小把戏:

        var prizes = new string[] {
            "vacation to Hawaii with all expenses covered",
            "used glue stick",
            // etc
            "dime"            
        };
    
        var rand = new Random();
    
        var result = (from prize in prizes
                      orderby rand.NextDouble()
                      select prize).Take(3).ToArray();
    

    贾斯汀,你的回答很好,但可能会导致两扇门获得相同的奖品。我相信这样可能更好:

    string[] prizes = new string[]
            {
                "Prize 1",
                "Prize 2",
                "Prize 3",
                "Prize 4",
                "Prize 5"
            };
    
            Random r = new Random();
            var choices = prizes.OrderBy(x => r.Next()).Take(3).ToArray();
    
            string firstDoor = choices[0];
            string secondDoor = choices[1];
            string thirdDoor = choices[2];
    

    贾斯汀,你的回答很好,但可能会导致两扇门获得相同的奖品。我相信这样可能更好:

    string[] prizes = new string[]
            {
                "Prize 1",
                "Prize 2",
                "Prize 3",
                "Prize 4",
                "Prize 5"
            };
    
            Random r = new Random();
            var choices = prizes.OrderBy(x => r.Next()).Take(3).ToArray();
    
            string firstDoor = choices[0];
            string secondDoor = choices[1];
            string thirdDoor = choices[2];
    

    StackOverflowTime以毫秒为单位;)StackOverflowTime以毫秒为单位;)非常感谢这是我最快的一次回答问题。很高兴能帮上忙。请确保您接受最符合您要求的答案-谢谢,克里斯坦克斯,这是我回答问题最快的一次。很高兴为您提供帮助。请确保您接受最符合您要求的答案-谢谢,克丽索里,但此解决方案会随机导致应用程序崩溃。我没有太多编程经验,所以我不知道为什么。VS 2010表示:System.IndexOutOfRangeException未经处理Message=IndexOutOfRangeException StackTrace:at STGS.Play.image3(Object sender,MouseevenTargets e)at System.Windows.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex,Delegate handlerDelegate,Object sender,Object args)在MS.Internal.JoltHelper.firevent(IntPtr unmanagedObj、IntPtr unmanagedObjArgs、Int32 argsTypeIndex、String eventName)随机生成器上。下一步(n)将生成0到n-1之间的数字,因此在上面的示例中,它可以解析为-1的索引。如果更改为字符串firstDoor=奖品[randomGenerator.Next(奖品.Length)];等等,这会让人担心,但此解决方案会随机导致应用程序崩溃。我没有太多编程经验,所以我不知道为什么。VS 2010表示:System.IndexOutOfRangeException未经处理Message=IndexOutOfRangeException StackTrace:at STGS.Play.image3(Object sender,MouseevenTargets e)at System.Windows.CoreInvokeHandler.InvokeEventHandler(Int32 typeIndex,Delegate handlerDelegate,Object sender,Object args)在MS.Internal.JoltHelper.firevent(IntPtr unmanagedObj、IntPtr unmanagedObjArgs、Int32 argsTypeIndex、String eventName)随机生成器上。下一步(n)将生成0到n-1之间的数字,因此在上面的示例中,它可以解析为-1的索引。如果更改为字符串firstDoor=奖品[randomGenerator.Next(奖品.Length)];等等,它会起作用的