1に非常に近い浮動小数点数にint>0を掛けると、1と解釈される可能性があります。
つまり、Math.random()が可能な限り最高の結果(1.0より1ステップ下)を返す場合、
(int)(Math.random() * 8)
8か7か?
実際の例として、この頻繁に使用される構成により、インデックスが範囲外のエラーになる可能性があります。
someArray[(int)(Math.random() * someArray.length)];
特にJavaとActionScript3の回答に興味がありますが、これらはすべて浮動小数点演算に同じルールを使用していると思います。どのプラットフォームでも回答が役立つでしょう。
更新:私はすでに回答を受け入れましたが、ActionScript 3でもこれがうまくいかないことを確認していただければ幸いです。同僚が、一度はうまくいかなかったと報告したことが、この質問をするきっかけになったからです。