为WP7选择C#中的随机字符串
我正在制作一个WP7应用程序,当用户点击图像时,它会随机决定他们将得到什么。 现在,我有以下代码:为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
字符串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)];等等,它会起作用的