백엔드 개발 PHP 튜토리얼 PHP는 고유한 난수를 효율적으로 생성합니다.

PHP는 고유한 난수를 효율적으로 생성합니다.

Aug 21, 2019 pm 06:10 PM
난수

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=&#39;200&#39;){
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..

PHP는 고유한 난수를 효율적으로 생성합니다.

위 그림과 같이 난수부분예제 10개를 구합니다.

PHP 관련 질문이 더 필요하시면 PHP 중국어 웹사이트를 방문하세요: PHP 비디오 튜토리얼

위 내용은 PHP는 고유한 난수를 효율적으로 생성합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. 크로스 플레이가 있습니까?
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

Excel에서 난수 생성기를 만드는 방법 Excel에서 난수 생성기를 만드는 방법 Apr 14, 2023 am 09:46 AM

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

Java 난수 생성 성능 최적화 방법 Java 난수 생성 성능 최적화 방법 Jun 30, 2023 pm 12:25 PM

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

PHP 배열을 사용하여 난수 및 인증 코드를 생성하는 방법 PHP 배열을 사용하여 난수 및 인증 코드를 생성하는 방법 Jul 16, 2023 am 08:31 AM

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

Go 언어 문서의 crypto/rand.Read 함수를 사용하여 난수 생성 Go 언어 문서의 crypto/rand.Read 함수를 사용하여 난수 생성 Nov 04, 2023 pm 03:39 PM

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

Numpy의 난수 생성 방법 및 응용 프로그램에 대한 심층적인 이해 Numpy의 난수 생성 방법 및 응용 프로그램에 대한 심층적인 이해 Jan 03, 2024 am 08:23 AM

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

Random.nextInt() 메서드를 사용하여 Java에서 난수를 생성하는 방법은 무엇입니까? Random.nextInt() 메서드를 사용하여 Java에서 난수를 생성하는 방법은 무엇입니까? Nov 18, 2023 pm 03:44 PM

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

Golang에서 중복 난수 생성을 방지하는 방법은 무엇입니까? Golang에서 중복 난수 생성을 방지하는 방법은 무엇입니까? Jun 01, 2024 pm 04:46 PM

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

Java의 Math.random() 함수를 사용하여 난수 생성 Java의 Math.random() 함수를 사용하여 난수 생성 Jul 24, 2023 am 08:45 AM

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

See all articles