在 C# 中生成随机数 [重复]

Posted

技术标签:

【中文标题】在 C# 中生成随机数 [重复]【英文标题】:Generate Random number in C# [duplicate] 【发布时间】: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 类。 ***.com/questions/2706500/… 你可以在这里找到答案:***.com/questions/2706500/… "另外,我怎样才能到达我不必点击猜测按钮的地方,我可以直接在键盘上按 Enter 键?"这是一个与随机数无关的单独问题。将其作为一个新问题提出,您会得到更好的答案。 【参考方案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 对象不是一个好主意。

以上是关于在 C# 中生成随机数 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中生成随机颜色名称

我需要在 C 中生成随机数 [重复]

在 Python 中生成非重复随机数

如何在 C# 中随机化种子 [重复]

如何获得某些数据的“形状”,以便可以在 numpy/scipy 中生成类似的随机数 [重复]

如何在Java中生成随机字符串[重复]