Я генерирую все случайные числа, даже в основном с отрицательными числами. Но как сгенерировать это случайное число, которое ДОЛЖНО включать хотя бы одно отрицательное число?

protected void Button1_Click(object sender, EventArgs e)
{
    var textBoxes = new List<TextBox> { TextBox1, TextBox2, TextBox3, TextBox4, TextBox5 };
    var rand = new Random(Guid.NewGuid().GetHashCode());
    foreach (var textBox in textBoxes)
        textBox.Text = rand.Next(-100, 100).ToString();
}
0
crowzz 24 Фев 2021 в 08:17

2 ответа

Лучший ответ

Вы можете просто выбрать случайное отрицательное число, затем назначить его случайному текстовому полю, а затем использовать свой код для заполнения других текстовых полей:

private Random rand = new Random();

protected void Button1_Click(object sender, EventArgs e)
{
    var textBoxes = new List<TextBox> { TextBox1, TextBox2, TextBox3, TextBox4, TextBox5 };

    // Pick a random negative number and assign it to a random textbox
    var negNumber = rand.Next(-100, 0).ToString();
    var randomTextboxIndex = rand.Next(textBoxes.Count);
    textBoxes[randomTextboxIndex].Text = negNumber;

    // Assign the other textboxes random numbers
    for (int i = 0; i < textBoxes.Count; i++)
    {
        if (i == randomTextboxIndex) continue;
        textBoxes[i].Text = rand.Next(-100, 101).ToString();
    }
}
0
Rufus L 24 Фев 2021 в 05:35

Это похоже на код Руфуса, но немного более сжатый:

private Random rand = new Random();

protected void Button1_Click(object sender, EventArgs e)
{
    var textBoxes = new [] { TextBox1, TextBox2, TextBox3, TextBox4, TextBox5 };

    // Pick a random textbox that shall be negative
    var negTb = rand.Next(textBoxes.Length);
    
    for (int i = 0; i < textBoxes.Length; i++)
        textBoxes[i].Text = rand.Next(-100, i == negTb ? 0 : 101).ToString();
    
}

Определите случайным образом, какой tb должен быть отрицательным, а затем, когда вы назначаете, сделайте верхний предел случайного для этого индексированного tb равным 0 вместо 101

0
Caius Jard 24 Фев 2021 в 05:49