こんにちは。
前回の応用で実現できそうですが、出来ないところがありましたか。
前回の応用となると以下のようになります。
lang
1static void Main(string[] args)
2{
3 var hoge = GetHoge();
4 Console.WriteLine(hoge);
5 Console.Read();
6}
7
8private static readonly string randomInput = "あいうえお";
9static string GetHoge()
10{
11 StringBuilder sb = new StringBuilder();
12 Random r = new Random();
13 //↓文字数固定であればこれを固定値にする
14 int length = r.Next(3, 5); //3~5文字
15 while(sb.Length <= length)
16 {
17 int pos = r.Next(randomInput.Length);
18 char c = randomInput[pos];
19 //↓文字重複させたくない場合
20 //if (sb.ToString().IndexOf(c) >= 0) continue;
21 sb.Append(c);
22 }
23 return sb.ToString();
24}
もし問題があればコメントにてお知らせください。
追記
使い方として以下のような感じになるでしょう。
lang
1public partial class Form1 : Form
2{
3 public Form1()
4 {
5 InitializeComponent();
6 this.MaximizeBox = false;
7 this.FormBorderStyle = FormBorderStyle.FixedSingle;
8 }
9
10 private void button1_Click(object sender, EventArgs e)
11 {
12 string randomCode = GetHoge();
13 textBox1.Text = randomCode;
14 }
15
16 private static readonly string randomInput = "あいうえお";
17 static string GetHoge()
18 {
19 StringBuilder sb = new StringBuilder();
20 Random r = new Random();
21 //↓文字数固定であればこれを固定値にする
22 int length = r.Next(3, 5); //3~5文字
23 while (sb.Length <= length)
24 {
25 int pos = r.Next(randomInput.Length);
26 char c = randomInput[pos];
27 //↓文字重複させたくない場合
28 //if (sb.ToString().IndexOf(c) >= 0) continue;
29 sb.Append(c);
30 }
31 return sb.ToString();
32 }
33}
メモ帳的なものに云々については別途質問しなおしたほうが良いでしょう。
そのほうが回答がつきやすいと思います。