[위 에] c 언어 로 난수 생 성
C 언어의 무 작위 함수 random 을 모두 가 알 고 있 을 지 모 르 지만 random 함 수 는 ANSI C 표준 이 아니 기 때문에 random 함 수 는 gcc, vc 등 컴 파일 러 에서 컴 파일 할 수 없습니다.
rand () 는 랜 덤 수 치 를 되 돌려 줍 니 다. 범 위 는 0 에서 RAND 입 니 다.맥 스 룸.0 에서 RAND 로 돌아 가기MAX 간 의 랜 덤 수치, RANDMAX 는 stdlib. h 에 정의 되 어 있 습 니 다. (그 값 은 적어도 32767) 제 가 연산 한 결 과 는 부정 확 한 숫자 입 니 다. 당신 이 정의 한 변수 유형 을 보 려 면 int 성형 은 32767 입 니 다.이 함 수 를 호출 하여 무 작위 수 를 만 들 기 전에 srand () 를 이용 하여 무 작위 피 드 를 설정 해 야 합 니 다. 무 작위 피 드 가 설정 되 어 있 지 않 으 면 rand () 는 호출 할 때 자동 으로 무 작위 피 드 를 1 로 설정 합 니 다.일반적으로 for 구문 으로 피 드 의 개 수 를 설정 합 니 다.구체 적 으로 아래 의 예 를 보시오.
예측 할 수 없 는 무 작위 시퀀스 를 만 드 는 방법 은 srand (unsigned int) (time (NULL) 를 이용 하 는 방법 입 니 다. 프로그램 을 실행 하 는 시간 이 다 르 기 때 문 입 니 다.
C 언어 에서 제공 하 는 난수 발생 기 사용법: 현재 의 C 컴 파 일 러 는 모두 ANSI 표준 을 기반 으로 하 는 위조 난수 발생 기 함 수 를 제공 하여 난수 생 성 에 사용 합 니 다. 이것 이 바로 rand () 와 srand () 함수 입 니 다. 이 두 함수 의 작업 과정 은 다음 과 같 습 니 다.
1) 먼저 srand () 에 피 드 를 제공 합 니 다. 이것 은 unsigned int 형식 이 고 수치 범 위 는 0 ~ 65535 입 니 다.
2) 그리고 rand () 를 호출 합 니 다. srand () 에 제 공 된 피 드 값 에 따라 무 작위 수 (0 에서 32767 사이) 를 되 돌려 줍 니 다.
3) 필요 에 따라 rand () 를 여러 번 호출 하여 끊임없이 새로운 무 작위 수 를 얻는다.
4) 언제든지 srand () 에 새로운 피 드 를 제공 하여 '랜 드 () 의 출력 결 과 를 추가 할 수 있 습 니 다. 다음은 0 ~ 32767 사이 의 난수 프로그램 입 니 다.
#include <stdlib.h>
#include <stdio.h>
#include <time.h> //
void main( void )
{int i;
srand( (unsigned)time( NULL ) ); //
for( i = 0; i < 10;i++ ) // 10
printf( " %d
", rand() );
}
위의 프로그램 에 따라 0 ~ 1 사이 의 임 의 수 를 쉽게 얻 을 수 있 습 니 다.
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
main( )
{int i;
srand( (unsigned)time( NULL ) );
for( i = 0; i < 10;i++ )
printf( "%5.2f
", rand()/32767.0);
}
그리고 1 ~ 100 사이 의 무 작위 수 는 이렇게 쓸 수 있다.
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
main( )
{int i;
srand( (unsigned)time( NULL ) );
for( i = 0; i < 10;i++ )
printf( "%d
", rand()%100+1);
}
come from http://hi.baidu.com/akaneyu
두 번 째, 세 번 째 통용 되 는 난수 발생 기, 세 번 째 함수 명: rand 공 추천 난수 발생 기 용 법: void rand (void);프로그램 예:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
int i;
printf("Ten random numbers from 0 to 99
");
for(i=0; i<10; i++)
printf("%d
", rand() % 100);
return 0;
}
함수 명: random 난수 발생 기 용 방법: int random (int num);프로그램 예:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
/* prints a random number in the range 0 to 99 */
int main(void)
{
randomize();
printf("Random number in the 0-99 range: %d
", random (100));
return 0;
}
함수 명: randomize 이게 나 아!공적. 에너지: 난수 발생 기 초기 화 법: void randomize (void);프로그램 예:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main(void)
{
int i;
randomize();
printf("Ten random numbers from 0 to 99
");
for(i=0; i<10; i++)
printf("%d
", rand() % 100);
return 0;
}
에서 랜 덤 수의 생 성 알고리즘 을 소개 했다.
3. 설정 범위 내의 임 의 수 를 어떻게 생 성 합 니까?
rand 로 인해 발생 하 는 난수 0 에서 randmax, and randmax 는 매우 큰 숫자 입 니 다. 그러면 어떻게 X ~ Y 의 수 를 만 듭 니까?
X 에서 Y 까지 Y - X + 1 개의 수가 있 기 때문에 X 에서 Y 까지 의 수 를 만 들 려 면 이렇게 써 야 합 니 다.
k=rand()%(Y-X+1)+X;
이렇게 하면 당신 이 원 하 는 모든 범위 내의 무 작위 수 를 만 들 수 있 습 니 다.
4. 반복 되 지 않 는 난수 생 성 1)
#include <stdlib.h>
#include <stdio.h>
#include<stdio.h>
#include <time.h>
swap(int *pm,int *pn) /* */
{
int temp;
temp=*pm;
*pm=*pn;
*pn=temp;
}
int main(void)
{
int i,a[513];
/*int *pa,*pb;*/
srand( (unsigned)time( NULL ) ); /* */
for(i=1; i<=512; i++){a[i]=i;printf("%4d",a[i]);}
for(i=512; i>=1; i--)
{
/* pa=&a[i]; pb=&a[rand()%i+1];*/
swap(&a[i], &a[rand()%i+1]); /* i , 0*/
/* , */
}
printf("
") ;
for(i=1; i<=64; i++)
printf("%4d",a[i] );
getch(); /*wintc */
}
2)
#include <stdlib.h>
#include <stdio.h>
#include<stdio.h>
int main(void)
{
int a[100]={0}; int i,m;
for(i=1; i<=99; ++i)
printf("%4d",a[i] );
srand( (unsigned)time( NULL ) );
for(i=1; i<=99; i++)
{
while(a[m=rand()%100+1]);
a = i;
}
for(i=1; i<=99; ++i)
printf("%4d",a[i] );
getch();
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Docker를 사용한 React 및 .NET Core 6.0 샘플 프로젝트 - 1부이 기사에서는 Entity Framework Core Code First 접근 방식을 사용하는 ASP.NET Core 6.0 WEP API의 CRUD(만들기, 읽기, 업데이트 및 삭제) 작업에 대해 설명합니다. 웹 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.