2014-06-30 3 views
0

수학 문제를 해결하기 위해 작은 프로그램을 작성했습니다. 하지만 실행하면 줄 번호 9,11,13,15에서 정의되지 않은 오프셋 오류가 발생합니다. 여러 가지 질문을했지만 유용한 정보를 찾지 못했습니다. 무엇이 원인 일 수 있습니다. ?여러 줄에 정의되지 않은 오프셋

<?php 
$arr = [1,3,5,7,9,11,13,15]; 
$tries=0; 
$answer=0; 
while(($answer!=30) && ($tries!=1000)) 
{ 
    $tries = $tries+1; 
    $num1=getRandomNumber(); 
    $num2=getRandomNumber(); 
    $num3=getRandomNumber(); 
    $num4=getRandomNumber(); 
    $num5=getRandomNumber(); 
    if($num5 + $num4 + $num3 + $num2 + $num1 == 30) 
    { 
     $answer = 30; 
     echo $num1 + "+" + $num2 + "+" + $num3 + "+" + $num4 + "+" + $num5 + " = 30"; 
     break; 
    } 
} 
if($tries==1000) 
{ 
    echo "1000 tries completed"; 
} 


function getRandomNumber() 
{ 
    $arr = [1,3,5,7,9,11,13,15]; 
    $r = mt_rand(1,15); 
    if(($r%2)!=0) 
    { 
     return $arr[$r]; 
    } 
} 
?> 
+1

배열에 8 개의 숫자가 있으므로 인덱스는 0-> 7이지만 무작위 인덱스 1-> 15가 생성됩니다. –

+0

아! 그건 내 멍청한 실수 야. 나는 그것을 고쳐 줄 것이다. – user3605847

답변

3

있다사이에 배열 인덱스를 생성 중입니다.및 15이지만 배열의 길이는 8입니다.

이 실제 배열 크기를 지원하기 위해,이 문제를 해결 mt_rand()에 전화를 업데이트하려면 :

$r = mt_rand(0, count($arr) - 1); 


사이드 노트 (특정 응답하지), PHP에서 문자열 연결이 기간 완료, . 아닌 + :

echo $num1 + "+" + $num2 + "+" + $num3 + "+" + $num4 + "+" + $num5 + " = 30"; 
// should be: 
echo $num1 . "+" . $num2 . "+" . $num3 . "+" . $num4 . "+" . $num5 . " = 30"; 
+0

아! 내가 자바와 PHP를 연결에 대한 혼란스러워. – user3605847

1

당신은 변경해야합니다 라인 :

$r = mt_rand(1,15); 

$r = mt_rand(0,count($arr)-1); 

에 당신의 $arr 당신의 getRandomNumber 기능에 때문에 당신의 getRandomNumber() 함수에서만 8 요소 (안 16)

1
function getRandomNumber() 
{ 
    $arr = [1,3,5,7,9,11,13,15]; 
    $r = mt_rand(1,15); 
    if(($r%2)!=0) 
    { 
     return $arr[$r]; 
    } 
} 

mt_rand 함수는 배열 색인 마녀가 7 이상인 수를 반환합니다. 배열을 확장하여 16 개의 인덱스로 만들거나 mt_rand 함수의 범위를 0-7로 줄일 수 있습니다.

관련 문제