「問題が発生したため、test.exe を終了します。 ご不便をおかけして申し訳ありません。」だなんて云うんですよ・・・
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/* プロトタイプ宣言 */
int GetRand(int Num); /* 0~Numまでの乱数生成 */
void ChangeNumber( int *a, int *b ); /* aとb入れ替え */
void NoOverlapRand(int min, int max, int *val); /* min~maxまで重複なし乱数を配列*valに格納 */
int main(){
int Random[20]; /* 重複なし乱数用配列 */
int j; /* カウンタ */
srand( (unsigned)time(NULL) ); /* 乱数初期化 */
NoOverlapRand( 0, 9, Random ); /* 0~9までの重複なし乱数をRandomへ */
for( j=0; j<10; j++ )
printf( "ランダムな値%dは「%d」を出力!\n", j+1, Random[j] );
return 0;
}
/* 0~Num-1までの乱数生成 */
int GetRand( int Num ){
return rand()%Num;
}
/* 重複なし乱数の生成 */
void NoOverlapRand(int min,int max,int *val){
int i=0,t,n;
for(t=min; t<=max; t++){
val[i]=t; /* val[i]にtを入れていく。 */
i++;
}
for(n=max-min; n>=0; n--)
ChangeNumber( &val[ GetRand( n ) ], &val[n] ); /* 配列を一つランダムで指定し、配列一番最後の数と交換 */
}
/* AとBの中身を入れ替える */
void ChangeNumber(int *a, int *b){
int r=*a;
*a=*b;
*b= r;
}C言語は色々なサイトで学びました。それなりには理解しているつもり・・・です。
まぁ理解してないから質問してしまう状況になるんですけどorz