想到一个方法,
先把位置序列化。
形成一个如
12341254251312... 这种间隔的序列,共7188个,1表示下一个与这个相差1,5表示相差5,类推
先产生相差1的间隔,好控制,连续6个1,第6个不得为1。
然后根据这个序列,生成位置坐标,也对应的是 7188 个。
再把奖项范围列出1,4,13,63,113,188,563,988,1688,3788,7188
如产生随机数,如得到一个 999 ,那么大 988,小于1688,就算 9 等奖。
依次写入前面生成的 7188个位置坐标序列中。
然后就得到最终结果。
这程序调试需要很久时间。我老是计算失败。
z = 25000
s = "1,3,9,50,50,75,375,425,700,2100,3400"
f = Split(s, ",")
z1 = 0
For i = 0 To 10
c(i + 1) = Val(f(i))
z1 = z1 + c(i + 1)
Next i
z2 = z - z1
a(5) = Int(Rnd() * Int(z / 5))
i = z - a(5) * 5
a(4) = Int(Rnd() * Int(i / 4))
i = i - a(4) * 4
a(3) = Int(Rnd() * Int(i / 3))
i = i - a(3) * 3
a(2) = Int(Rnd() * Int(i / 2))
i = i - a(2) * 2
a(1) = i
这步是算对了,但后面的就出现错误,还没想到问题出在哪。
没时间了。