如何在 AS3 中以均等的机会制作真正的随机数?
How to make a True Random with equal chance in AS3?
我正在开发一款石头剪刀布游戏玩家对战电脑。除了玩家每场比赛玩 3 轮外,没有什么特别的。
我正在使用此代码生成从 1 到 3 的随机数
Math.floor(Math.random()*(1+3-1))+1
1 = 剪刀,2 = 布,3 = 石头
我不确定,但此代码支持数字 2。
意味着计算机生成 Paper-Paper-Paper 所以玩家会注意到它并利用它 select scissor-scissor-scissor。我打赌你也会这样做。
如何在 AS3 中生成真正的随机性?
您的代码是正确的,尽管它可以简化为 Math.floor(Math.random()*3) + 1
。这将 return 介于 1 和 3 之间的数字,并且分布应该是均匀的(除非 Flash 播放器中存在大错误)。
您可以通过循环数字并计算每个数字的出现次数来验证这一点。例如:
var count = [0,0,0];
for (var i = 0; i < 10000; i++) {
var n = Math.floor(Math.random()*3) + 1;
count[n-1]++;
}
trace(count);
我正在开发一款石头剪刀布游戏玩家对战电脑。除了玩家每场比赛玩 3 轮外,没有什么特别的。
我正在使用此代码生成从 1 到 3 的随机数
Math.floor(Math.random()*(1+3-1))+1
1 = 剪刀,2 = 布,3 = 石头
我不确定,但此代码支持数字 2。
意味着计算机生成 Paper-Paper-Paper 所以玩家会注意到它并利用它 select scissor-scissor-scissor。我打赌你也会这样做。
如何在 AS3 中生成真正的随机性?
您的代码是正确的,尽管它可以简化为 Math.floor(Math.random()*3) + 1
。这将 return 介于 1 和 3 之间的数字,并且分布应该是均匀的(除非 Flash 播放器中存在大错误)。
您可以通过循环数字并计算每个数字的出现次数来验证这一点。例如:
var count = [0,0,0];
for (var i = 0; i < 10000; i++) {
var n = Math.floor(Math.random()*3) + 1;
count[n-1]++;
}
trace(count);