C言語でランダムな三文字の名前生成

なぜ作ったか

前々から音がよく、可愛い3文字の名前が欲しかった。

処理の流れ

  1. いくつ名前を生成するか指定
  2. 母音が3回出るまでランダム関数で各アルファベットに対応する数字を生成
    1. if(子音) ランダム関数で各母音に対する数字を続けて生成しカウントを+1
    2. else カウントを+1
  3. 指定した個数文字列を生成したら終了

コード

#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を変えるのはまだまだ先のことになりそうだ。