我需要创建一个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);
}
}