基本上我想做的是:
我有一个数字(即9),最大范围是36。 我希望在36种可能性中的9种中生成事件(正好是9/36,不多也不少) 数字9来自一个变量,36是36。 我不希望我的9次机会在开始时或最后发生。我希望它是随机的。
实施例。 我有36个机会中有9个“开枪”。
尝试1/36 - 小姐
尝试2/36 - 拍摄
尝试3/36 - 小姐等...,一直到36个可能的9个镜头。
顺序并不重要,我只需要在36次尝试中随机发生所有9次。
感谢任何帮助。
编辑:对不起,如果我是ambiguos。这是我的问题所在:我有一个事件,比如说“射击”。 我希望它发生$ occurace = 9次,但随机发生36次可能发生的机会。
像我说的那样: 试试看 - 小姐 试试 - 拍摄 try3 - shot ... 尝试 - 小姐 try36 - 小姐再次运行代码,我想要改变,例如:
试试 - 拍摄 试试 - 小姐 try3 - shot ... 尝试 - 小姐 try36 - shot
我需要在36次机会中随机发生9个事件,但我希望它们全部发生,而不是没有或超过9个
答案 0 :(得分:1)
你走了:
$spots = array();
while (count($spots) < 9) {
$rand = rand(1,36);
if (!isset($spots[$rand])) {
$spots[$rand] = TRUE;
}
}
$spots = $spots + array_fill(1, 36, FALSE);
ksort($spots);
总会有9个真实/拍摄点,其余的将是FALSE / Miss点。它是真正随机的,它们可以在数组中的任何位置。
数组foreach
中的简单$spots
会告诉您何时“拍摄”