我最近在一个废弃的PHP代码项目上遇到了以下构造:
while(($my_var = mt_rand(3, 6))%2 != 0);
(注意循环的空正文(。这样可以确保$my_var被指定为数字4或数字6。
使用上述结构是否比有任何(可衡量的、客观的(优势
$my_var = mt_rand(2, 3) * 2;
(我特别想知道,如果结果必须是偶数,为什么作者选择将3纳入随机化范围。(
while(($my_var = mt_rand(3, 6))%2 != 0);
这样可以确保$my_var被指定为数字4或数字6。
正如@Oli在评论中提到的,这是非常复杂和难以阅读的。
它还有一个缺点,你不能真正预测它会迭代多少次。
它可以(理论上("掷骰子",在前十次、一百次或一千次迭代中得出5。。。甚至永远不会结束。(mt_rand
的实现可能足够好,不会发生这种情况,但仍然如此。(