如何生成随机数

时间:2013-02-19 17:16:47

标签: vb6

我是vb的新手,我有3个文本框,当用户点击表单中的特定按钮时,我想将其设置为随机值:
这是代码:

Private Sub cmdjouer_Click(Index As Integer)
  txt1 = Math.Randomize(9)
 txt2 = Math.Randomize(9)
 txt3 = Math.Randomize(9)
End Sub

我收到以下错误        expected function or variable

我确信问题在于随机化函数。

任何想法都将受到赞赏

3 个答案:

答案 0 :(得分:10)

您将VB.NET与VB6混淆。它们彼此截然不同。将来,当您在线查找示例,文档和帮助时,请务必指定VB6以确保您正在使用正确的语言。它们本质上是两种完全不同的语言。

VB6

在VB6中,您需要使用Randomize函数初始为随机数生成器播种。然后,要生成随机数,您必须使用Rnd函数,例如:

Private Sub cmdjouer_Click(Index As Integer)
    Randomize()
    txt1.Text = Int((Rnd * 9) + 1)
    txt2.Text = Int((Rnd * 9) + 1)
    txt3.Text = Int((Rnd * 9) + 1)
End Sub

VB.NET

Math.Randomize是智能个人对象技术(SPOT)命名空间中的一种方法。我怀疑这是你真正想要的。您可能只想使用System.Random类,如下所示:

Private Sub cmdjouer_Click(sender As Object, e As EventArgs) Handles cmdjouer.Click
    Dim r As New Random()
    txt1.Text = r.Next(9).ToString()
    txt2.Text = r.Next(9).ToString()
    txt3.Text = r.Next(9).ToString()
End Sub

正如其他人所指出的那样,您不希望将文本框引用变量设置为数字(例如txt1 = ...)。您需要设置文本框的Text属性。

另外,正如下面的评论中所指出的,我调用了Randomize或在按钮的New Random事件中创建了Click对象。我这样做是为了简化示例,但实际上,这将是不好的做法。在任何一种情况下,理想情况下,随机数发生器的播种应该只发生一次,通常是在应用程序启动时。通过每次重新播种发生器,可以使结果更不随机。

答案 1 :(得分:2)

你应该read the documentation

Microsoft.SPOT.Math.Randomize说:

  

为随机数生成设置随机起点。

因此它不生成随机数,它初始化生成器。你想要Microsoft.SPOT.Math.Random。但更好的是,使用上级Random class生成随机数。

然而,代码有更多问题。正如Constanta在评论中提到的那样,txt1等可能是文本框,因此您需要更改分配以说txt1.Text = …等。但是,这仍然是仍然错误代码并赢得了用Option Strict On编译。 Which should always be On.所以你需要手动转换,留下这段代码:

Dim rng As New Random()
txt1.Text = rng.Next(9).ToString()
txt2.Text = rng.Next(9).ToString()
txt3.Text = rng.Next(9).ToString()

答案 2 :(得分:2)

试试这个

' Initialize the random-number generator.
Randomize()
' Generate random value between 1 and 6.
Dim value As Integer = CInt(Int((6 * Rnd()) + 1)) txt1.text = cstr(value)