我需要创建两个数组,用于模拟乐透彩票的抽奖。
第一个数组将由1到49之间的6个唯一数字组成。 第二个数组将由1到49之间的7个唯一数字组成。
我是PHP的新手,我无法弄清楚如何填充数组,给它一个预定义的大小,随机将1到49之间的六个数字放入数组中,然后最后排序数组按升序排列。
这是我的快速草案,我认为有些方向正朝着正确的方向前进?
$tmp;
$lotto = array(rand(1,49)); //Creating the random number for $lotto
$lottoMax = array(rand(1,49)); //Creating the random number for $lottoMax
for($tmp=0; $lotto <= 6; $tmp++){
//creating the size of the array?
}
任何建议/提示/帮助将不胜感激! 谢谢。
答案 0 :(得分:4)
有几种方法可以解决这样的问题。首先想到的是首先使用range(1, 49)
创建一个数字1-49的数组。然后用shuffle()
对数组进行洗牌,使其顺序随机化。最后,因为它已经是随机的,你可以切掉前6或7个数字来填充你的两个数组(我将使用array_slice()
)。保证内容不会有任何重复,只需要几次操作。
// The bag of numbers is a range
$bag = range(1, 49);
// Shuffle it
shuffle($bag);
// Get the first array
$first_group = array_slice($bag, 0, 6);
// Shuffle it again and get the second array
shuffle($bag);
$second_group = array_slice($bag, 0, 7);
print_r($first_group);
Array
(
[0] => 36
[1] => 22
[2] => 34
[3] => 17
[4] => 23
[5] => 25
)
print_r($second_group);
Array
(
[0] => 40
[1] => 32
[2] => 33
[3] => 36
[4] => 29
[5] => 7
[6] => 3
)
答案 1 :(得分:1)
您可以通过range()
函数从1到49生成初始数字,然后随机播放,然后将其切片:
$first = range(1, 49); shuffle($first);
$second = range(1, 49); shuffle($second);
$lotto = array_slice($first, 0, 6);
$lottoMax = array_slice($second, 0, 7);
答案 2 :(得分:1)
array_rand()
函数返回数组中的随机选择。
$all_numbers = range(1, 49); // Create an array of 1 .. 49
$pick6 = array_rand($all_numbers, 6);
sort($pick6);
$pick7 = array_rand($all_numbers, 7);
sort($pick7);
答案 3 :(得分:1)
您似乎有一个不错的开发背景,这可能会使PHP阵列起初有点混乱。它帮助我将它们视为哈希。
您可以通过几种方式创建数组,我通常喜欢声明它:
$new_array = array();
或者,填充和初始化:
$new_array = array(1,2,3,"String")
PHP数组通常(总是?)动态调整大小并输入...您可以根据需要将它们混合起来。
您还可以通过分配快速将项目添加到数组中:
$new_array[] = "whatever"; //will add it to the end of the array
$new_array['index'] = "more whatever"; // will insert it with the index 'index'
$new_array[11] = "last whatever"; // will put it in at numeric index 11
后两者将覆盖该索引中的任何值,这可能是显而易见的。
无论如何 - 希望这有帮助,而且从其他答案中已经不太明显了。
这是我计划建议的内容,但每个人都打败了我:
$possible_values = range(1,49);
$array_of_six = array_rand($possible_values,6);
$array_of_seven = array_rand($possible_values,7);
默认情况下会重新排序。