gpt4 book ai didi

php - 以宾果方式随机填充二维数组

转载 作者:可可西里 更新时间:2023-11-01 12:57:49 25 4
gpt4 key购买 nike

我有这两个功能:

function drawNumber($drawnNumbers){
$unique = true;

while ($unique == true){
$number = mt_rand(10, 69);
if (!in_array($number, $drawnNumbers)){
return $number;
$unique = false;
}
}
}

fillCard(); ?>

这是一个宾果游戏。卡片中填满了随机数字。但我不能这样得到它:

column column column column column column
row 10 13 16 14 16 19
row 24 26 28 29 23 21
row 36 33 39 30 31 35
row 46 48 42 45 43 47
row 59 56 51 52 58 50
row 60 65 68 62 61 67

所以我希望第一行的数字是 10 到 19第二行从 20 到 29 等等。

我试过这样

<?php drawnNumber():    $number = mt_rand(0,9);
fillArray(): $number = $row . $number; ?>

但这行不通,因为卡中有两个数字。

所以在此之前我尝试了一种不同的方式,使用 in_array:

<?php 
function fillCard(){
$card = array();

/* fill card with random numbers */
for($i = 0, $min = 10, $max = 19; $i < 6; $i++, $min+=10, $max += 10)
{
for($j = 0; $j < 6; $j++)
{
$number = mt_rand($min,$max) ;
if(!in_array($number, $card){
$card['row' . $i]['column' . $j]['number'] = $number;
$card['row' . $i]['column' . $j]['found'] = 0;
}
}
}
var_dump($card);
return $card;
} ?>

但卡片中仍然存在双随机数。在过去的两周里,我尝试了一些其他的想法,但我就是无法让它一起工作。如果一件事成功了,另一件事就失败了。

我可以获得卡片中的随机数,但不是唯一的随机数。我希望有一个人可以帮助我。(额外信息:这是一个宾果游戏。所以 drawnNumber() 是“球”,它被绘制并存储在数组$drawnNumbers中,它们也是唯一的随机数。 fillCard() 是填充宾果卡并检查 $drawNumber 是否在 $card 中的函数)

如果有人能告诉我如何让它工作,我将不胜感激。也许在一种算法方式还是一些代码?提前谢谢你。

最佳答案

一般来说,你是从某种盒子里画画的,对吧?所以做同样的事情,有一个包含所有可用数字的数组,一旦你从中得到一个随机数,就将其删除,这样下次你搜索一个数字时,你只会从剩下的数字中选择。小例子:

a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 4

我们选择一个介于 0 和 3 之间的随机数(0 和 alength - 1 即)。假设我们选择了索引 2,那么 a 将如下所示:

a[0] = 1
a[1] = 2
a[2] = 4

现在如果你在 0 和 2 之间画一个数字(注意你取的是 alength - 1!),你不会重新选择已经以任何方式选择号码,从而始终为您提供唯一号码。

附言这是一个简化版本,但现在如果您可以将其应用到您自己身上,并以您的示例为例,创建您将从中选择的多个数组。

关于php - 以宾果方式随机填充二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18334047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com