随机数生成器,总是产生一个与前一个随机数不同的数字
Random number generator that always produces a number different from the previous random number
所以我一直在为我的学生在 PowerPoint 上开发一个词汇足球游戏。感谢 John Korchok () 我能够实现一个 VBA 代码,当我击中某个形状时,它会为我提供一个随机数(这是让我的学生知道轮到谁的必要条件) .代码看起来像这样并且工作得很好:
Sub ShapeNumber()
Dim X As Long
Dim ShapeNumber As String
Dim oSlide As Slide
Dim oShape As Shape
X = 30
Randomize
ShapeNumber = Int((X * Rnd) + 1)
For Each oSlide In ActivePresentation.Slides
For Each oShape In oSlide.Shapes
If oShape.Name = "RandomNumber Shape" Then
oShape.TextFrame.TextRange.Text = ShapeNumber
End If
Next oShape
Next oSlide
End Sub
我一直在想是否可以修改代码,使其始终生成与上次生成的数字不同的数字。在实践中,我意识到当我按下形状但没有任何变化时,我的学生往往会感到困惑(他们不知道它是否再次出现相同的数字或者它是否根本不起作用)。
初始化为:
X = 30
Randomize
ShapeNumber = Int(X * Rnd)
X = X - 1
要生成数字,请使用:
ShapeNumber = (ShapeNumber + Int(X * Rnd) + 1) Mod 30
并在此处添加 1:
oShape.TextFrame.TextRange.Text = ShapeNumber + 1
您可以跟踪最后一个号码:
Dim LastNumber As Long
Sub ShapeNumber()
Dim X As Long
Dim ShapeNumber As Long
Dim oSlide As Slide
Dim oShape As Shape
X = 30
Randomize
Do
ShapeNumber = CLng((X * Rnd) + 1)
Loop While ShapeNumber = LastNumber
LastNumber = ShapeNumber
For Each oSlide In ActivePresentation.Slides
For Each oShape In oSlide.Shapes
If oShape.Name = "RandomNumber Shape" Then
oShape.TextFrame.TextRange.Text = ShapeNumber
End If
Next oShape
Next oSlide
End Sub
所以我一直在为我的学生在 PowerPoint 上开发一个词汇足球游戏。感谢 John Korchok (
Sub ShapeNumber()
Dim X As Long
Dim ShapeNumber As String
Dim oSlide As Slide
Dim oShape As Shape
X = 30
Randomize
ShapeNumber = Int((X * Rnd) + 1)
For Each oSlide In ActivePresentation.Slides
For Each oShape In oSlide.Shapes
If oShape.Name = "RandomNumber Shape" Then
oShape.TextFrame.TextRange.Text = ShapeNumber
End If
Next oShape
Next oSlide
End Sub
我一直在想是否可以修改代码,使其始终生成与上次生成的数字不同的数字。在实践中,我意识到当我按下形状但没有任何变化时,我的学生往往会感到困惑(他们不知道它是否再次出现相同的数字或者它是否根本不起作用)。
初始化为:
X = 30
Randomize
ShapeNumber = Int(X * Rnd)
X = X - 1
要生成数字,请使用:
ShapeNumber = (ShapeNumber + Int(X * Rnd) + 1) Mod 30
并在此处添加 1:
oShape.TextFrame.TextRange.Text = ShapeNumber + 1
您可以跟踪最后一个号码:
Dim LastNumber As Long
Sub ShapeNumber()
Dim X As Long
Dim ShapeNumber As Long
Dim oSlide As Slide
Dim oShape As Shape
X = 30
Randomize
Do
ShapeNumber = CLng((X * Rnd) + 1)
Loop While ShapeNumber = LastNumber
LastNumber = ShapeNumber
For Each oSlide In ActivePresentation.Slides
For Each oShape In oSlide.Shapes
If oShape.Name = "RandomNumber Shape" Then
oShape.TextFrame.TextRange.Text = ShapeNumber
End If
Next oShape
Next oSlide
End Sub