我一直在使用这个随机字符串生成器。但我的问题是这个随机字符串生成器正在重复。我听说过使用shuffle方法,但我不知道如何在我的代码中实现它。任何帮助将主要受到赞赏。
private static Random random = new Random();
public static string RandomString(int length)
{
const string chars = "0123456789";
return new string(Enumerable.Repeat(chars, length)
.Select(s => s[random.Next(s.Length)]).ToArray());
}
public static string RandomString2(int length)
{
const string chars = "AB";
return new string(Enumerable.Repeat(chars, length)
.Select(s => s[random.Next(s.Length)]).ToArray());
}
然后在页面加载中我实际上调用了我的2个方法并将它们组合在一个文本框中。
string dummy = RandomString(1);
string dummy2 = RandomString2(1);
txtTagNumber.Text = dummy2.ToString() + dummy.ToString();
答案 0 :(得分:1)
这可能适合你。
Random random = new Random();
const string numchars = "0123456789";
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
List<string> randStr = new List<string>();
for(int i = 0; i <= 10; i++)
{
string AlphaRandom = new string(Enumerable.Repeat(chars, 1)
.Select(s => s[random.Next(s.Length)]).ToArray());
string NumberRandom = new string(Enumerable.Repeat(numchars, 1)
.Select(s => s[random.Next(s.Length)]).ToArray());
if(randStr.Contains(AlphaRandom + NumberRandom))
{
i--;
}
else
{
randStr.Add(AlphaRandom + NumberRandom);
Console.WriteLine(randStr[i]);
}
}
创建一个随机类型的random
,然后为字母表获取2个字符串,为数字创建另一个字符串。创建了一个字符串列表,将所有生成的随机字符串添加到其中。在循环中,我试图生成10个随机字符串。检查Random String列表是否包含先前生成的字符串。如果是,则减小i的值,使其仍然生成10个字符串。如果找不到匹配项,则将随机字符串添加到列表中。
希望这有帮助
答案 1 :(得分:0)
另一种方法是创建所有选择的列表。然后,每当用户做出选择时,将其从列表中删除。从该列表中选择随机索引以仅产生唯一选择:
[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public void getPolicyDetails(string CustId, string PolicyType)
{
JavaScriptSerializer js = new JavaScriptSerializer();
Context.Response.Clear();
Context.Response.ContentType = "application/json";
clsPolicy data = new clsPolicy();
try
{
string policyTxt = "";
//get PolicyTxt from Database
data.Message = policyTxt.ToString();
}
catch (Exception ex)
{
}
Context.Response.Write(js.Serialize(data));
}