VBA整数与长时间进行计数尝试检查是否等于1至100范围内的挑选的数字



上周我必须在VBA进行测试。我必须编码一些"游戏"。这些是规则:

  1. 选择1至100(1和100)之间的数字
  2. 呼叫函数随机化
  3. 生成一个随机数在1到100(包括1和100)之间 -> Int (100 * Rnd + 1)
  4. 检查是否随机数=选择的号码。
  5. 5.1如果为true,则将 1添加到计数器,打印计数器,游戏完成
    5.2如果false,请添加 1以计数器,返回步骤3。

我希望您能得到"游戏"的目标。

我将计数器初始化为整数(16位)。我的老师告诉我,柜台可能会溢出。他建议使用长(32位),以便溢出的机会较小。

我告诉他,几乎不可能在柜台上进行32000尝试,因为挑选的数字等于生成的数字是1:100。

他回答:但仍然有可能。

我的问题:
如果数据类型是整数,则计数器是否可能溢出?如果是,有什么机会?如果没有,我该如何证明它?

为什么这个问题在Stackoverflow上而不是统计信息?
这很简单。因为你们知道幕后的RND功能和VBA,所以统计上的家伙没有。

我过去用来用于文件采样的类似东西,带来一个字节足够(1-255)?

Public dicGeneratedAlready As Scripting.Dictionary
Public Function GENERATE_RANDOM(intFromNumber As Integer) As Integer
Randomize
If dicGeneratedAlready Is Nothing Then Set dicGeneratedAlready = New Scripting.Dictionary
GenerateRand:
GENERATE_RANDOM = Int((Rnd * intFromNumber) + 1)
If dicGeneratedAlready.Exists(CStr(GENERATE_RANDOM)) Then
    GoTo GenerateRand
Else
    dicGeneratedAlready.Add CStr(GENERATE_RANDOM), CStr(GENERATE_RANDOM)
End If
End Function

从上面的描述中,似乎没有什么可以阻止代码尝试它以前尝试过的数字,因此从理论上讲,这也无济于事,这也可能溢出转到无限

相关内容

最新更新