这是我在这里发表的第一篇文章。提前感谢您抽出宝贵时间阅读我的问题。
我是新手编码员。我有十年前的计算机科学辅修课。我想要做一些简单的编码,并且有机会,所以我做到了!
在开发游戏时,我想运行一个程序来确定给定参数的给定结果的可能性。我兴奋地达到了这一点,但Google Scripts无法处理运行60,000,000个可能的场景以计算胜利%。
我得到了,“错误:超过最长执行时间。”
我只是想找到我和运行这个程序之间的最短路径。思路:
1)有没有办法删除最长的执行时间,让它只需要一整天?还有其他方法可以让它在Google脚本中运行吗? 2)也许我可以通过输入随机数来运行较少数量的试验。有没有办法在Google脚本中生成随机数? 3)除了Google Scripts之外,我应该做些什么吗?如果是这样,我应该研究一款适用于Mac的免费/价格合理的编译器吗?我尝试将它导入Xcode,但我很困惑,似乎无法进入一个简单的编译位置。此外,将其导入“C”会产生一些兼容性问题;虽然我可能只需要把它搞砸并在这里重组它。
作为参考,以下是将其计时的功能:
function dieFeeder(winCount, fSkill, fMagnitude, fHeart, fDie1, fDie2, fDie3, fDie4, fDie5, cSkill, cMagnitude, cHeart, cDie1, cDie2, cDie3, cDie4, cDie5){
// a parent function to function questionMatrix, feeds the changing dice into it
var matrixWinner;
//This 'for' clause keeps going until all dice permutations have been tried out
for (var i=0; i<60466176; i++){
//This part changes the dice to go through all combiations in a way similar to counting in base 6
if (cDie5 == 7){
cDie5 = 1;
cDie4 = cDie4+1;
}
if (cDie4 == 7){
cDie4 = 1;
cDie3 = cDie3 +1;
}
if (cDie3 == 7){
cDie3 = 1;
cDie2 = cDie2 +1;
}
if (cDie2 == 7){
cDie2 = 1;
cDie1 = cDie1 +1;
}
if (cDie1 == 7){
cDie1 = 1;
fDie5 = fDie5 +1;
}
if (fDie5 == 7){
fDie5 = 1;
fDie4 = fDie4 +1;
}
if (fDie4 == 7){
fDie4 = 1;
fDie3 = fDie3 +1;
}
if (fDie3 == 7){
fDie3 = 1;
fDie2 = fDie2 +1;
}
if (fDie2 == 7){
fDie2 = 1;
fDie1 = fDie1 +1;
}
cDie5 = cDie5 + 1;
//This part checks to see who wins and increases the winCount if it was the Favorite
matrixWinner = questionMatrix(fSkill, fMagnitude, fHeart, fDie1, fDie2, fDie3, fDie4, fDie5, cSkill, cMagnitude, cHeart, cDie1, cDie2, cDie3, cDie4, cDie5);
if (matrixWinner == 'favorite'){
winCount = winCount +1;
}
}
return winCount;
}
答案 0 :(得分:0)
无法解除最长执行时间。有限制,以便其他用户(像我一样)也有时间运行我们的脚本!解决这个问题的方法是将你的问题分解成许多子问题。
如果您要查找随机数,请使用Math.random()
。 Google Apps脚本是基于javascript构建的,因此可以使用基本的javascript函数。
关于我对#2的回答,您所展示的内容完全是javascript,因此您只需将代码复制到某个网页即可运行。 (For testing, you can use jsfiddle)。
您还需要定义if (cDie5 == 7){