如何在C#中将3个随机数作为数组中的3行并分配给3个变量?

问题描述 投票:-1回答:2

我正在尝试生成3个随机数,并将其作为连续3个数组输出到标签上。我只是不确定这样做。到目前为止,我将我的随机值初始化为

Random valueRandom = new Random();

private void Main()
{
    for (int i = 1; i <= gameAmountInteger; i++)
        DoNextNumber(valueRandom);
}

private void DoNextNumber(Random valueRandom)
{
    int int1;
    int1 = valueRandom.Next(0, 1);
    displayLabel.Text = valueRandom.ToString();
}

它应该是(范围0-10)3, 5, 2

c# random
2个回答
2
投票

你做错的事情很少:

valueRandom.Next(0,1);

这里.Next()方法的第一个值表示下限,第二个参数表示上限,你希望上限为10,但是给出为1。因为你想获得0-10之间的随机数,你必须给出valueRandom.Next(0, 10),如果需要包括10则不包括10意味着必须将它作为valueRandom.Next(0, 11)

displayLabel.Text = valueRandom.ToString();

DoNextNumber方法中,您将生成的随机数分配给所需的UI元素,因此您将仅在UI中获取最后一个数字。如果您需要显示所有显示的数字意味着您必须将其作为displayLabel.Text = displayLabel.Text + valueRandom.ToString();

考虑重复

在重复执行.Next()时,有可能获得重复的数字,如果重复项将成为您的场景中的问题,则意味着您必须将结果保留到集合中并在将新生成的随机数推送到集合之前检查是否存在。在这种情况下,在获取所需集合后将值写入UI。在这种情况下,你可以像这样使用代码:displayLabel.Text = String.Join(",", randomCollection);其中randomCollection是我上面提到的集合


1
投票

你应该使用valueRandom.Next(0, 10),我会重构你的代码,如下所示:

public static void Main()
{
    displayLabel.Text = GetRandomsAsString(gameAmountInteger);
}

private string GetRandomsAsString(int numberOfrandoms)
{
    var valueRandom = new Random();
    var randoms = "";
    for (int i = 0; i < numberOfrandoms; i++)
    {
        randoms += valueRandom.Next(0, 10);
    }

    return randoms;
}
© www.soinside.com 2019 - 2024. All rights reserved.