PHP는 고유한 난수를 효율적으로 생성합니다.
PHP가 무작위 배열을 생성하는 캡슐화 방법
/* * array unique_rand( int $min, int $max, int $num ) * 生成一定数量的不重复随机数 * $min 和 $max: 指定随机数的范围 * $num: 指定生成数量 */ function unique_rand($min, $max, $num) { //初始化变量为0 $count = 0; //建一个新数组 $return = array(); while ($count < $num) { //在一定范围内随机生成一个数放入数组中 $return[] = mt_rand($min, $max); //去除数组中的重复值用了“翻翻法”,就是用array_flip()把数组的key和value交换两次。这种做法比用 array_unique() 快得多。 $return = array_flip(array_flip($return)); //将数组的数量存入变量count中 $count = count($return); } //为数组赋予新的键名 shuffle($return); return $return; }
이 방법은 매번 난수를 얻어서 배열에 저장한 후 중복 제거합니다... 비효율적입니다... 효율적으로 생성하기 위해
PHP를 사용하고 싶지 않습니다. n 수(m<=n) 범위 내에서 m개의 반복되지 않는 난수
참고: "Programming Pearls"라는 책에서 "m개의 반복되지 않는 난수(m< =n) n" 범위 내
이 알고리즘은 난수 자체를 취하는 대신 난수(배열의 첨자)의 위치를 매우 교묘하게 취합니다. 난수를 취할 때마다 값 범위에서 제외되며 다음 번에는 나머지 숫자에만 포함됩니다. 한 번의 순회로 난수 선택을 완료할 수 있어 매우 효율적입니다.
function rand_num($num='200'){ for($i=0;$i<$num;$i++){ $n[$i] = $i; } for($i=0;$i<$num;$i++){ $rand = mt_rand($i,$num-1); //数组 随机数交换下标 if($n[$i] == $i){ $n[$i] = $n[$rand]; $n[$rand] = $i; } } }
1, 첫 번째 단계는 배열의 각 숫자에 첨자 순서대로 값을 할당하고 해당 순서대로 배열된 $num 숫자 키 값의 배열을 얻는 것입니다.
2.두 번째 단계, [i, $num-1] 범위에서 난수 $rand를 얻기 시작하고, 얻은 난수 $rand를 현재 위치 키에 해당하는 첨자의 값으로 사용합니다. i에서 $rand 배열의 키 $rand에 해당하는 아래 첨자 값을 i로 바꿉니다. 이는 실제로 배열 키 값의 교차 교환입니다. 의미는 생성된 난수를 값 범위 [i,$num-1]에서 제외하고 다음 번에는 나머지 숫자 [i+1,num-1]에서 값을 가져오는 것입니다.
3.세 번째 단계, 값 반복을 피하기 위해 변경되지 않은 키-값 쌍에 대해서만 교번 연산을 수행합니다. 즉, 원래 배열이 순차적으로 배열된 위치에 대해 교번 연산을 수행합니다(키 == 값 ).
4.끝.
위 그림과 같이 난수부분예제 10개를 구합니다.
PHP 관련 질문이 더 필요하시면 PHP 중국어 웹사이트를 방문하세요: PHP 비디오 튜토리얼
위 내용은 PHP는 고유한 난수를 효율적으로 생성합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











RANDBETWEEN을 사용하여 Excel에서 난수를 생성하는 방법 특정 범위 내에서 난수를 생성하려는 경우 RANDBETWEEN 함수를 사용하면 빠르고 쉽게 수행할 수 있습니다. 이를 통해 선택한 두 값 사이에서 임의의 정수를 생성할 수 있습니다. RANDBETWEEN을 사용하여 Excel에서 난수 생성: 첫 번째 난수를 표시할 셀을 클릭합니다. =RANDBETWEEN(1,500)을 입력하여 "1"을 생성하려는 가장 낮은 난수로 바꾸고 "500"을

Java 개발에서 난수 생성 성능을 최적화하는 방법 난수는 컴퓨터 과학, 특히 암호화, 시뮬레이션, 게임 및 기타 분야에서 널리 사용됩니다. Java 개발에서는 다양한 요구 사항을 충족하기 위해 난수를 생성해야 하는 경우가 많습니다. 그러나 난수 생성 성능은 종종 개발자의 관심사 중 하나입니다. 이 기사에서는 Java 개발에서 난수 생성 성능을 최적화하는 방법을 살펴봅니다. ThreadLocalRandom 클래스는 ThreadLocalRandom 클래스를 사용하여 Java7에 도입되었습니다.

PHP 배열을 사용하여 난수 및 확인 코드를 생성하는 방법 난수 및 확인 코드는 웹사이트 및 애플리케이션 개발 중에 매우 일반적입니다. PHP는 난수와 인증 코드를 생성하는 다양한 방법을 제공합니다. 이 문서에서는 PHP 배열을 사용하여 난수 및 확인 코드를 생성하는 방법과 해당 코드 예제를 소개합니다. 1. 난수 생성 PHP에서는 rand() 함수를 사용하여 난수를 생성할 수 있습니다. rand() 함수에는 최소값과 최대값이라는 두 개의 매개변수가 필요합니다. 샘플 코드는 다음과 같습니다: $min=1;$max=

Go 언어를 사용하여 난수 생성 Go 언어는 난수 생성을 위한 많은 내장 라이브러리를 제공하는 현대적이고 간결하며 효율적인 프로그래밍 언어입니다. 그중 crypto/rand 패키지는 안전한 난수를 생성하는 일련의 기능을 제공합니다. 이 기사에서는 crypto/rand 패키지의 읽기 기능을 사용하여 난수를 생성합니다. 먼저 crypto/rand 패키지를 가져와서 난수를 저장할 바이트 배열을 만들어야 합니다. 코드 예시는 다음과 같습니다: packagemain

난수를 생성하는 NumPy의 방법과 응용 방법을 살펴보세요. 소개: 난수는 시뮬레이션 실험, 데이터 생성 및 기능 선택과 같은 컴퓨터 과학 및 통계 분야에서 널리 사용됩니다. Python에서 NumPy(NumericalPython) 라이브러리는 난수 생성을 위한 다양한 기능을 제공하는 강력한 수치 컴퓨팅 라이브러리입니다. 이 기사에서는 NumPy의 난수 생성 방법을 살펴보고 구체적인 코드 예제를 제공합니다. 1. NumPy에서 제공하는 NumPy의 난수 생성 기능

Random.nextInt() 메서드를 사용하여 Java에서 난수를 생성하는 방법은 무엇입니까? 난수는 컴퓨터 과학에서 널리 사용되며 암호, 게임의 무작위 이벤트, 데이터 과학의 무작위 샘플링 등을 생성하는 데 사용될 수 있습니다. Java는 난수를 생성하는 Random 클래스를 제공하며 nextInt() 메서드를 사용하여 난수를 생성할 수 있습니다. 아래에서는 Random.nextInt() 메서드를 사용하여 난수를 생성하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 먼저, 우리는 필요합니다

Golang에서 중복 난수 생성을 방지하는 방법: 새로운 난수 생성기 rand.New(rand.Source)를 만듭니다. 엔트로피 소스로 rand.NewSource(time.Now().UnixNano())를 사용합니다. 임의의 정수를 생성하려면 rand.Intn(n)을 사용하십시오.

Java의 Math.random() 함수를 사용하여 난수를 생성합니다. 난수는 컴퓨터 프로그래밍에서 매우 일반적인 개념이며 무작위 비밀번호 생성, 복권 추첨, 게임의 무작위 이벤트 등과 같은 다양한 기능을 구현하는 데 도움이 될 수 있습니다. Java에서는 Math.random() 함수를 사용하여 난수를 생성할 수 있습니다. Math.random() 함수는 Java 표준 라이브러리의 정적 메소드로 0보다 크거나 같고 1보다 작은 double 유형의 무작위 숫자를 반환합니다. 통과하다
