Abstract 의사 난수는 컴퓨터 소프트웨어 설계에 널리 사용됩니다. 이 문서에서는 의사 난수 생성의 일반 원칙과 ASP.NET Framework에서 제공되는 Random 클래스 및 해당 메서드를 사용하여 다양한 요구 사항을 충족하는 다양한 범위에서 난수를 생성하는 방법을 소개합니다. 마지막으로 웹 컨트롤 형식과 결합하여 소프트웨어 설계에서 ASP.NET의 난수 적용을 설명합니다.
키워드 ASP.NET; 웹, 무작위 유사
난수는 소프트웨어 설계, 특히 실제 환경 시뮬레이션 및 테스트 분야에서 널리 사용됩니다. 진정한 무작위 시퀀스를 추구하기 위해 사람들은 특정 범위 내에서 정확도(비트 수)를 충족하는 균일하게 분포된 시퀀스를 생성하기 위해 많은 원시적인 물리적 방법을 사용했습니다. 단점은 속도가 느리고 효율성이 낮으며 많은 양의 저장 공간이 필요하다는 것입니다. 공간이 있고 다시 나타날 수 없습니다. 컴퓨터 시뮬레이션 연구의 요구를 충족시키기 위해 사람들은 알고리즘을 사용하여 다양한 확률 분포를 시뮬레이션하는 의사 무작위 시퀀스를 생성하는 연구에 눈을 돌립니다. 의사 난수는 수학적 재귀 공식에 의해 생성된 난수를 의미합니다. 실용적인 관점에서 이러한 숫자를 얻는 가장 간단하고 자연스러운 방법은 컴퓨터 언어 라이브러리에서 제공하는 난수 생성기를 사용하는 것입니다. 다양한 개발 환경에서는 난수 생성을 위한 다양한 기능과 방법을 제공합니다. 일반적으로 값이 0과 1 사이에 균일하게 분포되는 의사 난수 변수를 출력합니다.
난수 생성기는
종종 다음 공식을 사용하여 컴퓨터에서 난수를 생성하는 방법입니다.
이 공식을 사용하여 0부터 65536까지의 일련의 난수 a1, a2,...를 생성하는 프로그램을 232단계 곱셈 조화 난수 생성기라고 합니다. 그 중 b, c, d는 양의 정수이고, d를 수식에 의해 생성된 난수열의 시드(seed)라고 한다.
이 공식을 통해 매개변수 b, c, d가 결정되면 생성된 무작위 시퀀스도 결정된다는 것을 알 수 있습니다. 임의성을 어느 정도만 만족하는 이 수열을 의사 난수(pseudo-random number)라고 합니다.
다음은 난수 생성기의 예입니다. 그 중, Random_seed 함수를 사용하면 형식 매개변수 d=0일 때 d≠0일 때 시스템의 현재 시간이 난수 시드로 선택됩니다. 시드; 함수 랜덤은 주어진 시드를 기반으로 하며, 새 시드를 계산하고 낮음~높음 범위에서 새 난수를 생성합니다.
#MULTIPLIER 0x015A4E35L 정의
#define INCREMENT 1
void random_seed(unsigned long d){
if (d==0)seed = time(0);
그렇지 않으면 시드 = d;}
unsigned int 무작위(unsigned long low, unsigned long high)
{
시드 = MULTIPLIER * 시드 + 증분;
return ((seed>>16)% (고-저) + 저가);
}
}
ASP.NET의 의사 난수 생성 메커니즘으로
인해 컴퓨터가 완전한 난수를 생성하는 것은 불가능합니다. 소위 난수 생성기는 특정 알고리즘을 사용하여 미리 선택된 난수 시드에 대해 복잡한 작업을 수행하고 생성된 결과를 사용하여 완전한 난수를 대략적으로 시뮬레이션합니다. 이러한 종류의 난수를 의사 난수라고 합니다. 의사 난수는 동일한 확률을 가진 유한한 숫자 집합에서 선택됩니다. 선택된 숫자는 완전히 무작위는 아니지만 실용적인 목적으로는 충분히 무작위입니다.
1. VB.NET 내장 기능
ASP.NET 프로그램은 다양한 프로그래밍 언어를 사용할 수 있습니다. 기본 프로그래밍 언어는 VB.NET입니다. VB.NET과 VB는 다소 유사하지만 응용 프로그램 환경과 작성 방법이 다릅니다. 코드에도 차이가 있습니다. VB.NET에서 수학 함수를 사용하려면 System 네임스페이스 아래에 있는 .NET Framework에서 제공하는 Math 클래스를 전달해야 합니다. 사용자는 이를 사용하기 위해 코드 상단에 Imports System을 추가할 수 있습니다. 수학 함수.
난수를 생성하는 데 사용되는 함수의 프로토타입은 Rnd(x)입니다. 이 함수는 0과 1 사이의 단정밀도 난수를 생성하는 데 사용됩니다. x는 난수 생성을 위한 시드입니다. (최소, 최대) 범위에서 숫자를 무작위로 선택하려면 다음 공식을 사용해야 합니다. 난수 = (최대 - 최소) * Rnd(x) + 최소.
의사 난수 선택은 무작위 시드에서 시작됩니다. 매번 얻은 의사 난수가 충분히 "임의"인지 확인하려면 무작위 시드를 선택하는 것이 매우 중요합니다. 선택한 랜덤 시드가 동일하면 생성된 랜덤 시퀀스도 동일합니다. 일반적으로 시스템 시간과 관련된 매개 변수는 임의 시드로 사용되며 이는 .net Framework의 난수 생성기에서 사용되는 기본 방법이기도 합니다.
2. 난수 클래스 System.Random
난수 클래스 System.Random 클래스는 표 1과 같이 다양한 요구 사항을 충족하는 다양한 난수를 생성하기 위해 다음과 같은 메서드를 제공합니다.
표 1 System.Random 클래스에서 제공하는 다양한 메서드
일련번호 | 메소드 이름 | 기능 설명 |
1 | 다음() | 0에서 2147483647 사이의 정수를 반환합니다. |
2 | 다음(i) | 0과 i 사이의 정수를 반환합니다. |
3 | 다음(i,j) | i~j 사이의 정수를 반환합니다. |
4 | 다음더블() | 0과 1 사이의 임의의 10진수를 반환합니다. |
5 | 다음더블(바이트()) | 바이트 배열의 각 요소 값으로 0에서 255 사이의 임의의 정수를 사용합니다. |
난수 클래스를 사용하면 System.Random을 먼저 선언해야 합니다. Nextbytes(byte()) 메서드를 사용하려면 사용하기 전에 바이트 배열도 선언해야 합니다.
3. 테스트 프로그램 작성은
ASP.NET 프로그램을 실행하기 전에 Microsoft IIS 구성, .NET Framework SDK 및 컴퓨터 MSE 편집기 설치를 포함하여 개발 및 실행 환경을 설정해야 합니다. MSE 편집기는 Microsoft Office용 추가 기능 소프트웨어로 ASP.NET용 편집 도구로서 매우 편리합니다. 테스트 프로그램 코드는 다음과 같습니다.
<script 언어="vb" runat="server">
sub page_load(객체로 보내기,e를 eventargs로 보내기)
r1을 무작위로 희미하게 =새로운 무작위()
response.write("r1.next()의 결과는 다음과 같습니다:"+r1.next().tostring())
response.write("fr1.next(100)의 결과는 다음과 같습니다:" +r1.next(100).tostring())
response.write("r1.next(100,150)의 결과는 다음과 같습니다:"+r1.next(100,150).tostring())
response.write("r1.nextdouble()의 결과는 다음과 같습니다:"+r1.nextdouble().tostring())
r1.nextbytes(r) // r(300)을 바이트로 희미하게 표시
response.write("r(100)은:")
응답.쓰기(r(199))
end sub </script>
테스트 결과는 그림 1에 표시됩니다.
그림 1 의사 난수 테스트 실행 결과
개발
애플리케이션 요구 사항 분석 예: 주사위 게임 시뮬레이션을 위한 애플리케이션을 만듭니다. 이 게임에서 플레이어는 무작위로 주사위를 굴립니다. 각 주사위에는 6개의 면이 있으며 각각 6개의 점 1, 2, 3, 4, 5 및 6을 나타냅니다. 주사위가 멈추면 주사위 윗면에 있는 숫자를 보세요. 던진 횟수가 6이면 승리 메시지가 표시되고, 그렇지 않으면 던지기가 계속됩니다.
1. 핵심 기술
1.1 웹 컨트롤 형식
웹 컨트롤 형식은 ASP.NET의 System.Web.UI.WebControls 네임스페이스의 개체입니다. 처리 프로세스는 HTML 컨트롤 양식과 유사하며 다음과 같은 특징이 있습니다. 양식은 서버 측에서 실행됩니다. 입력 필드는 모두 강력하고 풍부한 속성과 메서드를 갖춘 컨트롤이며 입력 필드의 정보를 유지할 수 있습니다. 입력 필드를 확인하는 기능이 있습니다. 데이터 표시 컨트롤 등이 포함되어 있습니다.
일반적인 웹 컨트롤 양식 코드는 다음과 같습니다.
<asp: 버튼 id="sub3" text="confirm" runat="server"/>
그 중 ASP: XXX는 ID 속성이 나타내는 웹 컨트롤 유형을 나타냅니다. 컨트롤의 식별 이름 Runat 속성의 값은 서버이며 이는 서버 측에서 실행되는 컨트롤임을 나타냅니다.
이 예제에서 사용되는 웹 컨트롤은 주로 버튼 컨트롤입니다. 이미지 컨트롤은 이미지 파일을 표시하는 데 사용되며 이미지 파일의 URL을 나타내는 Imageurl, 이미지 파일 표시 너비, 높이 등의 속성을 갖습니다.
1.2 의사 난수 생성
요구 사항 분석 설명에 따르면, 무작위로 주사위를 던져 얻은 점을 시뮬레이션하려면 1부터 6까지의 정수를 무작위로 생성해야 합니다. 이 경우 Next (i, j) 방법은 다음과 같습니다. System.Random 클래스 중 하나를 사용할 수 있습니다. 여기서 i=1, j=7입니다. (저자는 테스트 프로그램을 작성하여 j=6일 경우 생성되는 난수가 1~5 사이인 것을 확인했습니다.)
2. 프로그램 구현
프로그램의 주요 코드는 다음과 같습니다.
<script 언어="vb" runat="server ">
sub disp(obj as object,e as eventargs)
희미한 r1 as random =new random() //난수 클래스 정의
dim file_prefix as string = "Imagesdie"
dim file_suffix as string = ".png"
value = r1.next(1,7) //정수 값
s1 = file_prefix + value.tostring() + file_suffix
pic1.imageurl = s1 //value = 6이면
disp.text = "
인 경우이미지 컨트롤의 imageurl 속성을 업데이트합니다.
승리" / /프롬프트 정보 표시
disp.text
= "다시 시도"
end if
end sub
<//script>
<form id="form1" runat="server"><br>
<asp:button id="disp" runat="server " onclick="disp" text="start"/>
<asp:image id="pic1" runat="server" width="50" height="50"/></form>
실행 결과 프로그램의 그림은 그림 2에 나와 있습니다.
그림 2 프로그램 실행 결과
결론
의사 난수는 웹 응용 프로그램의 여러 곳에서 사용됩니다. 난수를 생성하기 위한 시드 매개 변수를 선택하는 방법과 더 나은 성능으로 의사 난수를 생성하기 위해 사용할 임의 알고리즘은 컴퓨터 소프트웨어입니다. 개발자가 추구하는 목표 중 하나입니다. ASP.NET 프레임워크에서 제공하는 의사 난수 생성 클래스와 스크립팅 언어 VB.NET에서 제공하는 함수 메서드를 사용하여 다양한 요구 사항을 충족하는 다양한 난수 시퀀스를 생성할 수 있습니다. 예를 들어, 웹 시스템에서 신원 인증에 사용되는 무작위 검사 코드는 난수 생성 기술을 사용합니다. 이 웹 사이트에는 많은 기사가 있으므로 여기서는 자세히 설명하지 않겠습니다.