-
Notifications
You must be signed in to change notification settings - Fork 0
/
makename.js
151 lines (148 loc) · 3.25 KB
/
makename.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
var NoHead_List = [12449,12451,12453,12455,12457,12483,12515,12517,12519,12526,12528,12529,12530,12531,12597,12598,12599];
var NoUse_LIST = [12449,12451,12453,12455,12457,12483,12515,12517,12519,12526,12528,12529];
function HeadUseCheck(num){
if(num >= 64 && num < 100){
return false;
}
return (NoHead_List.indexOf(num) == -1) ? true : false;
}
function UseCheck(num){
return (NoUse_LIST.indexOf(num) == -1) ? true : false;
}
function Rand_Char(c_head){
// 12449 - 12534 ァ-ヶ 75% 1種文字
// 0 - 70 その他文字 25% 2種文字
// 第二種混入確率
var one_probability = ( 100 - document.name_form.one_probability.value );
var x;
// 先頭語の場合
if(c_head){
do{
// 1種文字
// Math.floorは切り捨て
if( ( Math.random() * 100 ) < one_probability ){
x = Math.floor( Math.random() * 84 ) + 12449;
}
// 2種文字
else{
x = Math.floor( Math.random() * 75 );
}
}while( !HeadUseCheck(x) )
return x;
}
// それ以外の場合
else{
do{
// 1種文字
// Math.floorは切り捨て
if( ( Math.random() * 100 ) < one_probability ){
x = Math.floor( Math.random() * 84 ) + 12449;
}
// 2種文字
else{
x = Math.floor( Math.random() * 75 );
}
}while( !UseCheck(x) )
return x;
}
}
// 小文字出力
function lc(num){
num %=5;
switch(num){
case 0:return "ャ";
case 1:return "ィ";
case 2:return "ュ";
case 3:return "ェ";
case 4:return "ョ";
}
}
// 数値→文字変換
function NtoC(num){
var back_c;
if(num > 100){
return String.fromCharCode(num);
}
else{
if(num < 5){
back_c = "キ" + lc(num);
}
else if(num < 10){
back_c = "シ" + lc(num);
}
else if(num < 15){
back_c = "チ" + lc(num);
}
else if(num < 20){
back_c = "ニ" + lc(num);
}
else if(num < 25){
back_c = "ヒ" + lc(num);
}
else if(num < 30){
back_c = "ミ" + lc(num);
}
else if(num < 35){
back_c = "リ" + lc(num);
}
else if(num < 40){
back_c = "ギ" + lc(num);
}
else if(num < 45){
back_c = "ジ" + lc(num);
}
else if(num < 50){
back_c = "ヂ" + lc(num);
}
else if(num < 55){
back_c = "ビ" + lc(num);
}
else if(num < 60){
back_c = "ピ" + lc(num);
}
else if(num < 64){
switch(num){
case 60: back_c = "ファ"; break;
case 61: back_c = "フィ"; break;
case 62: back_c = "フェ"; break;
case 63: back_c = "フォ"; break;
}
}
else{
back_c = "ー";
}
return back_c;
}
}
function Make_name(){
var output_num = document.name_form.o_num.value;
document.name_form.result.value = "";
var i,j;
var max_length = document.name_form.max_length.value - 2;
/*
// デバッグ出力用
for(i=12449;i<12535;i++){
document.name_form.result.value += String.fromCharCode(i) + ":" +(i) + ":" + HeadUseCheck(i);
document.name_form.result.value += "\n";
}
*/
// 乱数命名
var rname,rlength,nc,hc;
for(i=0;i<output_num;i++){
if(document.name_form.add_no.checked){
document.name_form.result.value += (i+1)+":";
}
rname = "";
hc = false;
rlength = Math.floor( Math.random() * (max_length) ) + 3;
for(j=0;j<rlength;j++){
nc = Rand_Char( !hc );
hc = HeadUseCheck( nc );
rname += NtoC( nc );
if( NtoC( nc ).length == 2){
j++;
}
}
document.name_form.result.value += rname + "\n";
}
}