您好我想创建一个只创建随机表达式的随机数生成器
这是我的数学游戏项目。我的问题是,现在我不理解随机发生器。
就像我只想要它创建一个随机2位整数然后操作然后另一个随机2位整数。一个随机表达式生成器将生成减法和加法问题,而另一个将生成乘法和除法问题
像这样23 - 78 48-55 24 + 16
答案 0 :(得分:1)
你可能会发现找出当前发电机的工作方式比编写自己的发电机更容易。
有一个表达式可以给出两个包含边界之间的随机整数:
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)
这里,例如,是一个生成这样的表达式的完整程序,虽然你需要弄清楚如何将它与你自己的代码集成(将它重构为几个函数对于一个开始来说会很好)。 / p>
我还没有对数字生成中是否存在边缘情况进行详尽的分析,因此您需要一个测试套件才能确定。
无论如何,你应该作为开发者做的所有事情: - )
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
答案 1 :(得分:1)
也许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