我在 Flash 中制作了一些东西,它模拟轮盘赌中的 X 次旋转,获取每个值,确定其颜色,然后在每次颜色变化时将颜色“字符串”推入数组中(例如,如果它变为 R,R, R,B 当它击中黑色时,它将“3”推入一个数组并重新开始计数)。我要确定的是超过一定数量的旋转(例如,9 次旋转),如果它可以找到整个阵列中形成的任何特定模式。
我这样做是因为当我在两个不同的案例之间进行测试时发生了一件奇怪的事情。一种情况是if(arr[i] > 2 && arr[i+1] < 7)
,如果任何一种颜色的持续时间超过 2 次旋转的序列被少于 7 次的序列所接替,这几乎是:
(~RRRB,~RRRBB,~RRRBBB,~RRRBBBB,~RRRBBBBB~,RRRBBBBBB)
另一种情况是任何交替颜色的序列在达到 8 条之前就被破坏了:
(RBRR, RBRBB,RBRBRR,RBRBRBB,RBRBRBRR,RBRBRBRBB)
平均而言,第二种情况比第一种情况发生的频率高出 20%……因为两种情况都有相同数量的案例,每个案例都有相同数量的旋转,所以统计上不应该发生,甚至考虑到0, 20% 是巨大的...我会将代码发布到下面以确保它是正确的,但这只是让我对差异感到困惑...无论如何我离题了。
基本上我只是想弄清楚9个连续数字的任何其他特定模式(基于它们的颜色,而不是值)是否会更频繁地出现。我真的不知道有什么其他方法可以解决它,而不是将它放在一个巨大的嵌套 for 循环 9 深然后检查开关中的每个结果(这绝对是巨大的,2 ^ 9 巨大......)。
for(
for(
for(
for(
for(
for(
for(
for(
for(
switch(){ //512 cases
现在我知道它是 flash,而 actionscript 可能是最糟糕的操作之一,但我正在创建一个小型应用程序,而且我对 C 或其变体的学习还不够好,无法在其他任何事情上做到这一点。我真正需要的只是一个指向我可以使用的任何特定有效快捷方式的指针。任何提示将非常感谢。
场景代码:
function findSequence():void
{
for (var i = 0; i< avgNumCl.length; i++)
{
if (avgNumCl[i] > 2 && avgNumCl[i + 1] < 7)
{
sequenceArr[0]++;
}
if (avgNumCl[i] == 1 && avgNumCl[i+1] == 1 &&
avgNumCl[i+2] == 1 && avgNumCl[i+3] == 1 &&
avgNumCl[i+4] == 1 && avgNumCl[i+5] == 1 &&
avgNumCl[i+6] == 1 && avgNumCl[i+7]>1)
{
sequenceArr[1]++;
}
else if (avgNumCl[i] == 1 && avgNumCl[i+1] == 1 &&
avgNumCl[i+2] == 1 && avgNumCl[i+3] == 1 &&
avgNumCl[i+4] == 1 && avgNumCl[i+5] == 1 &&
avgNumCl[i+6]>1)
{
sequenceArr[1]++;
}
else if (avgNumCl[i] == 1 && avgNumCl[i+1] == 1 &&
avgNumCl[i+2] == 1 && avgNumCl[i+3] == 1 &&
avgNumCl[i+4] == 1 && avgNumCl[i+5]>1)
{
sequenceArr[1]++;
}
else if (avgNumCl[i] == 1 && avgNumCl[i+1] == 1 &&
avgNumCl[i+2] == 1 && avgNumCl[i+3] == 1 &&
avgNumCl[i+4]>1)
{
sequenceArr[1]++;
}
else if (avgNumCl[i] == 1 && avgNumCl[i+1] == 1 &&
avgNumCl[i+2] == 1 && avgNumCl[i+3]>1)
{
sequenceArr[1]++;
}
else if (avgNumCl[i] == 1 && avgNumCl[i+1] == 1 &&
avgNumCl[i+2]>1)
{
sequenceArr[1]++;
}
}
}