到目前为止,我正试图让一个数字生成器工作并且它的状态良好,但我最近遇到了一些问题。所以我试图做的是使用默认字符串生成一个生成器,然后在它的末尾添加一些数字。我已经知道了所有这些。现在,我试图这样做,如果我的发电机吐出的数字是'5',那么下一个数字必须是'1'。我不完全确定这是否可行,但这是我的代码:
public string GenerateRandomCode(int length)
{
string charPool = "ABCDEF1234567890";
StringBuilder rs = new StringBuilder();
Random random = new Random();
for (int i = 0; i < length; i++)
{
rs.Append(charPool[(int)(random.NextDouble() * charPool.Length)]);
}
return rs.ToString();
}
public string Random(int length)
{
string charPool = "A457";
StringBuilder rs = new StringBuilder();
Random random = new Random();
for (int i = 0; i < length; i++)
{
rs.Append(charPool[(int)(random.NextDouble() * charPool.Length)]);
}
return rs.ToString();
}
public string Char(int length)
{
string charPool = "ABF35689";
StringBuilder rs = new StringBuilder();
Random random = new Random();
for (int i = 0; i < length; i++)
{
rs.Append(charPool[(int)(random.NextDouble() * charPool.Length)]);
}
return rs.ToString();
}
public string Next(int length)
{
string charPool = "F01";
StringBuilder rs = new StringBuilder();
Random random = new Random();
for (int i = 0; i < length; i++)
{
rs.Append(charPool[(int)(random.NextDouble() * charPool.Length)]);
}
return rs.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = "00000001008" + Random(1) + "000" + Char(1) + Next(1) + GenerateRandomCode(15);
}
}
}
因此,如果Char ='5',我希望Next等于'1'
答案 0 :(得分:2)
你可以。记住最后一个角色,然后采取行动。
// ...
char c = '-';
for (int i = 0; i < length; i++) {
if (c == '5') {
c = '1';
} else {
c = charPool[random.Next(charPool.Length)];
}
rs.Append(c);
}
// ...
random.Next(charPool.Length)
自动生成[0 ... charPool.Length-1]范围内的整数。
答案 1 :(得分:0)
不确定你拍的是什么,但也许是这样的(?):
private void button1_Click(object sender, EventArgs e)
{
string sRandom = Random(1);
string sChar = Char(1);
string sNext = "1";
if (sChar != "5") sNext = Next(1);
textBox1.Text = "00000001008" + sRandom + "000" + sChar + sNext + GenerateRandomCode(15);
}
因此,每当Char(1)的方法调用返回字符串“5”时,sNext将保持其初始值“1”。否则,如果Char(1)不是“5”,则sNext将被分配下一个(1)的调用结果。