【问题标题】:Generate Random number in C# [duplicate]在 C# 中生成随机数 [重复]
【发布时间】:2016-08-20 17:37:22
【问题描述】:

我想生成一个介于 1 和 10 之间的随机数。但我遇到了几个错误。

public Form1()
{
    InitializeComponent();
}
int randomNumber = (0, 11);
int attempts = 0;

public int RandomNumber
{
    get
    {
        return randomNumber;
    }

    set
    {
        randomNumber = value;
    }
}

全部放在0、11下面的逗号就是说--> struct System.Int32代表一个32位有符号整数 标识符预期语法错误,',' 预期

另外,我怎样才能到达我不必点击猜测按钮的地方,我只需按键盘上的 Enter 键即可?

private void button1_Click_1(object sender, EventArgs e)
{
    try
    {
        if (int.Parse(textBox1.Text) > RandomNumber) label1.Text = "Too high.";

        else if (int.Parse(textBox1.Text) < RandomNumber) label1.Text = "Too low.";
        else
        {
            label1.Text = "You won.";
            textBox1.Enabled = false;
            label2.Text = "Attempts: 0";
            textBox1.Text = String.Empty;
            MessageBox.Show("You won in " + attempts + " attempts, press generate to play again.", "Winner!");
            attempts = 0;
            label2.Text = "Attempts: " + attempts.ToString();
            return;
        }
        attempts++;
        label2.Text = "Attempts: " + attempts.ToString();
    }
    catch { MessageBox.Show("Please enter a number."); }
}

【问题讨论】:

  • C# 没有用于生成随机数的特殊语法。如果要生成随机数,请查看Random 类。
  • 你可以在这里找到答案:stackoverflow.com/questions/2706500/…
  • "另外,我怎样才能到达我不必点击猜测按钮的地方,我可以直接在键盘上按 Enter 键?"这是一个与随机数无关的单独问题。将其作为一个新问题提出,您会得到更好的答案。

标签: c# random


【解决方案1】:

要生成随机数,您必须使用 System.Random 类。您的语法可能如下所示:

System.Random rng = new System.Random(<insert seed if you want>);
int randomNumber = rng.Next(1,11);

您必须执行 rng.Next(1,11),因为下限是 include(1 是可能的结果),上限是 exclude(11 不会被添加到可能的结果池中)。

要实现您的 Enter 快捷方式,您必须在 Forms KeyPress 事件中添加一个方法,在该事件中调用 button1_clicked 方法。

button1_Clicked_1(this, System.EventArgs.Empty);

最后,您必须将表单的“KeyPreview”属性设置为 true。

【讨论】:

    【解决方案2】:

    您可以使用类似下面的代码来生成 1 到 10 之间的随机数

            Random randomNumberGenrator = new Random();
            int num = randomNumberGenrator.Next(10) + 1;
    

    【讨论】:

    • 而不是复制答案,您应该找到另一个问题来回答该问题并将其标记为重复
    • 当然感谢您的信息
    • 这会使用种子 10 初始化 Random 实例。然后它会尝试从 0 生成 int.MaxValue - 1,然后将 1 添加到其中。所以这个方法产生一个从1int.MaxValue的值。
    • @Enigmativity :根据您的理解,我可以知道我定义的最大值是多少。在代码中,我定义了我的随机数范围并生成 1 到 10 之间的随机数
    • @Maddy - 实际上,我对可能的数字范围有点错误 - 因为您使用 10 的种子初始化 Random 那么它总是会产生相同的随机数,所以第一次调用randomNumberGenrator.Next() 将始终产生相同的值。当我运行你的代码时,我总是得到2041175502。如果您删除了种子,那么您将在代码中获得 12147483647 之间的不同值。
    【解决方案3】:

    看看this

    使用 Random 类来生成随机数。

    private Random _rnd = new Random(); 
        private int RandomNumber
            {
                get
                {
    
                    return _rnd.Next(0,11);
                }
    
                set
                {
                    this = value;
                }
            }
    

    【讨论】:

    • 每次调用属性时都创建Random 对象不是一个好主意。
    猜你喜欢
    • 2012-12-17
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    • 2018-06-25
    相关资源
    最近更新 更多