Hatena::ブログ(Diary)

酢ろぐ(ch3cooh.jp) RSSフィード


CH3COOH(酢酸)の実験室
Baseball Japan / ○○時計 for WP7 / for WM
Windows Phone 7 開発 Tips

2011-09-30

ダミーの人名を生成させる

そういえば、過去にテストで大量の人名が必要になって、適当な名前を自動生成した記憶があります。わんくまのブログの方から発掘してきました

----

第11回 テスト用の名前データを自動生成する:ITproを参考にVB.NETで人名生成させる関数を作成しました。

view plaincopy to clipboardprint?

    ''' <summary>  
    ''' 人名の生成を行う  
    ''' </summary>  
    ''' <param name="count">生成する人名数</param>  
    ''' <returns>  
    ''' 人名が格納されたString型配列  
    ''' </returns>  
    Function CreateName(ByVal count As Integer) As String()  
        Dim retNames(count) As String  
          
        Dim fName1 As String() = {"", "山", "川", "谷", "田", "小", "石", "水", "大", "橋", "野", "池", "吉", "中"}  
        Dim fName2 As String() = {"田", "本", "川", "口", "野", "村", "崎", "山", "島", "上", "浦", "内", "原"}  
          
        Dim lName1 As String() = {"順", "優", "恵", "浩", "裕", "正", "昭", "真", "純", "清", "博", "孝", "幸"}  
        Dim lName2 As String() = {"", "一", "二", "子", "美", "一郎", "実", "義", "夫", "雄", "太郎", "彦"}  
          
        ' 再現性を持たせる為、種を固定しています  
        Dim r As New System.Random(1000)  
        '' ランダムにする場合  
        'Dim r As New System.Random(Microsoft.VisualBasic.DateAndTime.Timer)  
      
        For i As Integer = 0 To retNames.Length - 1  
          
            Dim f1 As Integer = r.Next(0, fName1.Length - 1)  
            Dim f2 As Integer = r.Next(0, fName2.Length - 1)  
            Dim l1 As Integer = r.Next(0, lName1.Length - 1)  
            Dim l2 As Integer = r.Next(0, lName2.Length - 1)  
          
            Dim name As String = _  
            String.Format("{0}{1} {2}{3}", fName1(f1), fName2(f2), lName1(l1), lName2(l2))  
          
            retNames(i) = name  
        Next i  
          
        Return retNames  
    End Function  

----

この時、何かもっと自然な方法がない?という質問にぽぴ王子とまっちゃだいふくさんになんちゃって個人情報a threadless kite - 糸の切れた凧(2007-01-20)を教えて頂きました。

今となっては、生の個人情報を扱う機会がないので、自動でダミーデータを生成させるってこともなくなったなぁ。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/ch3cooh393/20110930/1317357193