C言語でランダムな三文字の名前生成
なぜ作ったか
前々から音がよく、可愛い3文字の名前が欲しかった。
処理の流れ
- いくつ名前を生成するか指定
- 母音が3回出るまでランダム関数で各アルファベットに対応する数字を生成
- if(子音) ランダム関数で各母音に対する数字を続けて生成しカウントを+1
- else カウントを+1
- 指定した個数文字列を生成したら終了
コード
#include<stdio.h> #include<stdlib.h> #include<time.h> int main(void){ int m,n,i,j,co=0; char tmp; char alpha[30]; char V[5]={'A','I','U','E','O'}; //母音セット srand((unsigned)time(NULL)); //時間で初期化 for(tmp='A';tmp<='Z';tmp++){ //アルファベットの配列を生成 alpha[co] = tmp; co++; } printf("input Number of names to generate(1-10)>"); scanf("%d",&m); for(i=0;i<m;i++){ for(j=0;j<3;){ n = rand()%26; //26種類の数字を生成 if(alpha[n]=='A' || alpha[n]=='I' || alpha[n]=='U' //母音判定 || alpha[n]=='E' || alpha[n]=='O'){ printf("%c",alpha[n]); j++; }else{ printf("%c",alpha[n]); n = rand()%5; //5種類の数字を生成 printf("%c",V[n]); j++; } } printf("\n"); } return 0; }
実行結果
input Number of names to generate(1-10)>10 PEOE QEGABE KEJOWI TOLAKE IDEMU OPENU MILIA LOJEQU AOFE TUPESO
反省
あまりかわいい名前はできなかった。
生成された名前を見ればそれが可愛いのか瞬時にわかるが、どのように制約をつければ可愛い名前が生成できるのかまるで分らない。効率的に可愛い名前を生成するのは非常に難しい。
HNを変えるのはまだまだ先のことになりそうだ。