[英]Choosing a random string in C# for WP7
我正在制作一個WP7應用程序,當用戶點擊圖像時,它會隨機決定他們將獲得什么。
現在,我有以下代碼:
string firstdoor = "";
string seconddoor = "";
string thirddoor = "";
和
string prize1 = "vacation to Hawaii with all expenses covered";
string prize2 = "used glue stick";
string prize3 = "pile of dog dung";
string prize3 = "vacation to Europe with all expenses covered";
string prize3 = "million dollars";
string prize3 = "blank CD";
string prize3 = "temporary tattoo";
string prize3 = "nickel";
string prize3 = "dime";
和
我想做的是將door
s隨機分配給prize
s。
例如,當用戶點擊圖像時,將dime
分配給thirddoor
,將nickel
分配給第一扇門,將一million dollars
分配給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)];
假設您不想重復任何獎品,則解決方案會稍微復雜一些,但是您可以帶上Linq和Random的一些技巧:
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();
賈斯汀(Justin),您的回答很好,但可能會導致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];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.