【问题标题】:Randomize numbers Visual Basic [duplicate]随机化数字 Visual Basic [重复]
【发布时间】:2020-09-13 14:09:29
【问题描述】:

我试图弄清楚如何使用 Visual Basic 生成 3 个介于 50 和 100 之间的不同随机数。我的代码只打印了 3 次相同的数字。

Dim number As Integer
number = rndNumber.Next(50, 100)

lblATime.Text = number.ToString
lblBTime.Text = number.ToString
lblCTime.Text = number.ToString

【问题讨论】:

标签: .net vb.net


【解决方案1】:

您在number 变量中存储了一个随机数并显示了三次。

如果您想要 3 个不同的号码,请调用三次

lblATime.Text = rndNumber.Next(50, 101).ToString
lblBTime.Text = rndNumber.Next(50, 101).ToString
lblCTime.Text = rndNumber.Next(50, 101).ToString

另外,来自文档,

Next(minValue, maxValue) 返回范围从 minValue 到 maxValue - 1 的随机整数。但是,如果 maxValue 等于 minValue,则该方法返回 minValue。

因此,如果您想同时包含 50 和 100,请使用 Next(50, 101)。

【讨论】:

  • 更有可能使用相同的种子-"但是,仅在 .NET Framework 上,由于时钟的分辨率有限,因此使用无参数构造函数连续创建不同的 Random 对象会创建随机数生成器产生相同的随机数序列。”。
  • @Lankymart 虽然使用相同的种子是一个常见问题,但发布的代码正是按照这个答案所说的:取一个随机数并显示 3 次。
【解决方案2】:

number = rndNumber.Next(50, 100) 行不会在 number 和该表达式之间建立“关系”,这意味着它不会在您每次访问 number 时重新执行该表达式。

相反,当应用程序到达该行时,它会执行rndNumber.Next(50, 100)一次并将结果(整数)值分配给变量number。在您分配其他内容之前,number 将保留其分配的值。这就是所有三个 Text 属性都获得相同值的原因。

【讨论】:

    猜你喜欢
    • 2019-06-02
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 2011-08-17
    • 2013-05-11
    相关资源
    最近更新 更多