如何在vb.net中创建一个随机数生成器



嗨,我想做一个随机数生成器,只创建随机表达式

这是我的一个数学游戏项目。我的问题是,现在我不理解随机生成器。

就像我只想让它创建一个随机的2位数整数,然后是一个运算,然后是另一个随机2位数整数。一个随机表达式生成器将生成减法和加法问题,而另一个将生成乘法和除法问题

像这个

23-7848-5524+16

也许Random类会很有用:

Sub Main
    'Create an instance of the Random class
    Dim rnd As New Random()
    'Get a random number from 10 to 99  (2 digits)
    Dim randomNumber As Integer = rnd.Next(10, 100)
    Console.WriteLine(randomNumber)
End Sub

您可能会发现,了解当前生成器的工作方式比编写自己的生成器更容易。

有一个表达式会给你一个介于两个包含边界之间的随机整数:

value = CInt(Math.Floor((upper - lower + 1) * Rnd())) + lower

你可以用它来获得你的两位数:

value = CInt(Math.Floor(90 * Rnd())) + 10

要从四个{+-*/}的集合中获得基本运算,可以使用相同的规则给您一个从零到三的随机值:

op = CInt(Math.Floor(4 * Rnd()))

如果你想要一个文本表示,你只需要一个可以从中获取运算符的字符串(作为字符或字符串),比如:

Dim ops As String = "+-*/"
Dim chrop as Char = ops(CInt(Math.Floor(4 * Rnd())))
Dim strop as String = ops.SubString(CInt(Math.Floor(4 * Rnd())),1)

例如,这里有一个生成此类表达式的完整程序,不过您需要弄清楚如何将其与自己的代码集成(首先将其重构为几个函数会很好)。

我还没有对数字生成中是否存在边缘情况进行详尽的分析,因此您需要一个测试套件来确定。

作为一名开发人员,你应该做的所有事情:-)

Module Module1
    Sub Main()
        Dim ops As String = "+-*/"
        Randomize()
        Dim value1 As Integer = CInt(Math.Floor(90 * Rnd())) + 10
        Dim value2 As Integer = CInt(Math.Floor(90 * Rnd())) + 10
        Dim strop As String = ops.Substring(CInt(Math.Floor(4 * Rnd())), 1)
        Console.WriteLine(value1 & " " & strop & " " & value2)
    End Sub
End Module

最新更新