gpt4 book ai didi

vba - 非重复随机数生成器?

转载 作者:行者123 更新时间:2023-12-01 07:29:55 25 4
gpt4 key购买 nike

我使用 Visual Basic for Applications (Excel) 创建了一个琐事游戏,该游戏通过通过案例陈述来选择问题,其中案例是数字。我让程序从 1 到最大问题数量中随机选择一个数字。使用这种方法,游戏会重复问题。

有没有办法让一些东西随机生成数字(每次都有不同的结果)并且不会多次重复一个数字?在遍历完所有数字后,它需要执行某个代码。 (我将输入结束游戏并显示他们做对和做错的问题数量的代码)

我想到了几种不同的方法来做到这一点,但是我什至无法开始考虑语法可能是什么。

最佳答案

听起来您需要一个 Array Shuffler!

看看下面的链接——
http://www.cpearson.com/excel/ShuffleArray.aspx

Function ShuffleArray(InArray() As Variant) As Variant()
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' ShuffleArray
' This function returns the values of InArray in random order. The original
' InArray is not modified.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim N As Long
Dim Temp As Variant
Dim J As Long
Dim Arr() As Variant


Randomize
L = UBound(InArray) - LBound(InArray) + 1
ReDim Arr(LBound(InArray) To UBound(InArray))
For N = LBound(InArray) To UBound(InArray)
Arr(N) = InArray(N)
Next N
For N = LBound(InArray) To UBound(InArray)
J = CLng(((UBound(InArray) - N) * Rnd) + N)
Temp = InArray(N)
InArray(N) = InArray(J)
InArray(J) = Temp
Next N
ShuffleArray = Arr
End Function

Sub ShuffleArrayInPlace(InArray() As Variant)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' ShuffleArrayInPlace
' This shuffles InArray to random order, randomized in place.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim N As Long
Dim Temp As Variant
Dim J As Long

Randomize
For N = LBound(InArray) To UBound(InArray)
J = CLng(((UBound(InArray) - N) * Rnd) + N)
If N <> J Then
Temp = InArray(N)
InArray(N) = InArray(J)
InArray(J) = Temp
End If
Next N
End Sub

关于vba - 非重复随机数生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7542617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com