【发布时间】:2020-07-11 22:10:45
【问题描述】:
目前我正在.net Core 3.1 中编写一个基于控制台的程序。该程序的目标是让用户输入一个字符串,然后控制台将尝试猜测它。示例:
What shall I guess: string
Ok Guessing String...
Code Cracked :) Your code is: string
无论如何,我在创建程序时遇到了问题。我创建的随机生成的字符串非常频繁地重复,如果代码更长,问题就会成倍增加。
我用它来生成随机字符串
string passw = Console.Readline();
for (int i = 0; i > -1; i++)
{
var chars = "abcdefghijklmnopqrstuvwxyz";
var stringChars = new char[passw.Length];
for (int a = 0; a < passw.Length; a++)
{
stringChars[a] = chars[rnd.Next(chars.Length)];
}
var finalstring = new String(stringChars);
Console.WriteLine(finalstring);
if (finalstring== passw)
{
Console.WriteLine("");
Console.WriteLine("Password Guessed: " + finalstring);
Console.WriteLine("It took a total of: " + i + " guesses!");
Environment.Exit(0);
}
}
我怎样才能实现目标?我看到了一些关于列表和类似事物的东西,但想知道是否有更好的方法来获得我正在寻找的结果。谢谢!如果需要,我可以澄清任何事情!
【问题讨论】:
-
洗牌你的
chars并拿走其中的passw.Length。这里有很多例子 -
"我创建的随机生成的字符串非常频繁地重复" 通常这是由于在循环中创建
Random实例引起的。您的实际代码中是否有但未在此处显示? -
能不能多解释一下shuffle方法,我的instance或者random在循环之外。我只是注意到这样一个事实,即随着它创造的次数越来越多,重复次数变得非常明显
-
我没有看到任何重复...你能发布你的完整代码吗?
-
当你说“重复”时,你的意思是相同的
finalstrings 被一遍又一遍地写入控制台吗?还是您的意思是每个特定的finalstring有时会多次包含相同的字符?
标签: c# .net string random .net-core