[英]How can I pick randomly between a minus and plus sign?
我正在制作一個數學游戲,我需要讓它在-
或+
之間隨機選擇。
我已經嘗試過這個:
Random rnd = new Random();
string name = rnd.Next(-, +);
但這不起作用。 任何人有辦法我可以做到這一點?
正如評論者提到的, Random
類不允許您生成隨機字母。 但是,它確實提供了一個隨機數生成函數: Next()
。 請參閱https://msdn.microsoft.com/en-us/library/2dx6wyd4(v=vs.110).aspx
因此,生成一個隨機的+
或-
變得非常簡單 - 我們只需創建一個包含可能選項的數組,並生成一個介於 0 和數組長度之間的隨機數。 您可能會想,但是等等,如果我的數組包含 2 個項目,並且隨機數為 2,並且我嘗試訪問索引為 2 的數組,我不會得到索引越界異常嗎? 答案是否定的,因為上限在Next()
函數中是獨占的 - 它可以返回 0 和upperBound - 1
之間的任何值。
char[] options = {'+', '-'};
Random rnd = new Random();
int randomNumber = rnd.Next(0, options.Length);
char randomChar = options[randomNumber];
public static class Extensions
{
public static T NextItem<T>(this Random r, params T[] items)
{
// Thanks to nbokmans for catching my error here: The second parameter
// is not the largest value it can return; it's the "exclusive upper bound".
return items[r.Next(0, items.Length)];
}
}
...
Random rnd = new Random();
string name = rnd.NextItem("-", "+");
使用 LINQ 的解決方案:
static void Main(string[] args)
{
Random random = new Random();
int count = 10;
char[] plusesAndMinuses = new int[count]
.Select(i => random.Next())
.Select(i => i % 2 == 0 ? '+' : '-')
.ToArray();
string result = new string(plusesAndMinuses);
Console.WriteLine(result);
}
像這樣的東西:
Random rnd = new Random();
string value = "";
switch (rnd.Next(0, 2))
{
case 0:
value = "+";
break;
case 1:
value = "-";
break;
}
Random.Next()
將返回隨機integer
數值。 基於此,您可以區分它應該是+
還是-
。 例子 :
Random random = new Random(); // new Random object
int randomValue = random.Next(); // get new random value
int oneOrZero = randomValue % 2; // get either 1 or zero
string name = "";
if ( oneOrZero == 0 ) // if value is zero
{
name = "-"; // name will contain minus sign
}
else
{
name = "+"; // else name will contain plus sign
}
您可以將其簡化為一行:
string name = new Random().Next() % 2 == 0 ? "-" : "+";
我猜你想擲硬幣得到正數還是負數? 如果你只想要一個 + 或 - 的字符串,試試這個:
string name = (rnd.NextDouble() > 0.5)? "+" : "-";
如果那是你想要做的,那么你可以連接:
name = name + rnd.Next(); // Or whatever
嘗試
String[] symbols = new[]{"-", "+"};
Random r = new Random();
var sym = symbols[r.Next(0, 2)];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.