>백엔드 개발 >PHP 튜토리얼 >포괄적인 목록 Randomizer를 위해 반복 없이 난수를 생성하는 방법은 무엇입니까?

포괄적인 목록 Randomizer를 위해 반복 없이 난수를 생성하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-21 11:49:31808검색

How to Generate Random Numbers without Repetition for a Comprehensive Listing Randomizer?

반복 없이 난수 생성: 종합 가이드

Yelp 목록을 무작위로 생성하는 웹 사이트를 개발하려는 과정에서 다음과 같은 방법을 찾습니다. 반복이 발생하기 전에 20개 목록이 모두 한 번 표시되도록 합니다. 이 문제를 해결하기 위한 다양한 접근 방식을 살펴보겠습니다.

PHP의 rand(0, 19) 접근 방식

현재 구현에서는 PHP의 rand(0, 19)를 사용하여 다음을 생성합니다. Yelp 목록을 선택하기 위한 임의의 색인입니다. 그러나 이 방법에는 숫자가 반복될 수 있다는 제한이 있습니다. 이를 극복하려면 좀 더 정교한 접근 방식이 필요합니다.

숫자 범위 섞기

효과적인 해결책 중 하나는 목록 지수를 나타내는 숫자 범위를 섞는 것입니다. 이는 다음과 같이 range() 및 shuffle()을 사용하여 달성할 수 있습니다.

<code class="php">$numbers = range(0, 19);
shuffle($numbers);</code>

이렇게 하면 0부터 19까지의 숫자가 무작위 순서로 포함된 배열이 생성됩니다.

다음을 사용하는 대체 솔루션 RandomGen() 함수

또 다른 접근 방식은 최소값, 최대값 및 수량을 매개변수로 받아들이는 사용자 정의 RandomGen() 함수를 사용하는 것입니다. 지정된 범위 내에서 고유한 난수 목록을 생성합니다.

<code class="php">function randomGen($min, $max, $quantity) {
    $numbers = range($min, $max);
    shuffle($numbers);
    return array_slice($numbers, 0, $quantity);
}

print_r(randomGen(0, 20, 20));  // generates 20 unique random numbers</code>

사용된 숫자 저장 및 데이터베이스에 업데이트

모든 목록이 표시되지 않도록 하려면 반복하면 표시된 목록을 데이터베이스에 저장할 수 있습니다. 무작위 목록을 표시할 때마다 해당 ID가 데이터베이스의 항목과 일치하는지 확인하세요. 그렇지 않은 경우 목록을 표시하고 해당 ID를 데이터베이스에 추가하십시오. 모든 목록이 표시될 때까지 이 과정을 반복합니다.

이 방법을 사용하면 반복이 발생하기 전에 각 목록이 정확히 한 번 표시됩니다.

위 내용은 포괄적인 목록 Randomizer를 위해 반복 없이 난수를 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.