簡體   English   中英

如何在減號和加號之間隨機選擇?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM