我如何生成从01到99的5个随机数,并在今天给出'第六个数字是什么日期



我需要创建一个6位数的数字,其中5将从1到99抽取,第六个将是今天的日期(只有一天,而不是一个月(,并将其放入标签1中。我是个初学者,所以我很抱歉。

命令式的解决方案:

var r = new Random();
var text = DateTime.Now.Day.ToString();
while (text.Length < 6)
{
// identify the next random prefix string between 1 and 99 inclusive
var prefix = (r.Next(99) + 1).ToString();
// reduce the prefix to the first character (1-9) if it would exceed the target total of 6
if (prefix.Length + text.Length > 6)
{
prefix = prefix.Substring(0, 1);
}
text = prefix + text;
}
label1.Text = text;

或者以功能性风格:

var r = new Random();
label1.Text = string.Concat(Generate(DateTime.Now.Day.ToString(), i => (r.Next(99) + 1).ToString()).SelectMany(i => i.Reverse()).Take(6).Reverse());

后者假设您可以访问类似于的生成器功能

public static IEnumerable<T> Generate<T>(T start, Func<T, T> step)
{
var current = start;
while (true)
{
yield return current;
current = step(current);
}
}

最新更新