我希望我的程序随机选择一个日期作为出生日期.第一个随机数是年份,第二个是月份,最后一个是日期.
Random rand = new Random();
for (int i = 0; i < antal; i++)
array[i].Number = rand.Next(00, 99) +
rand.Next(01, 12) +
rand.Next(01, 30);
Run Code Online (Sandbox Code Playgroud)
然而,如果随机数小于10,比如3,我希望它显示"03",而不仅仅是"3".有没有办法在C#中做到这一点?或者有更好的随机化出生日期的方法吗?
数字没有格式 - 整数是整数,因此数字3可以平均表示为03,3,0x3等.
此外,您只是添加数字 - 您不是连接字符串表示.所以第一个数字可能是50,第二个数字可能是6,第三个可能是3 ...所以你最终得到59,而不是500603,这可能是你的预期.
您可以简单地将年份乘以10000,将月份乘以100,但肯定会更好地存储DateTime值.
获取1950年和2050年之间的随机日期的最简单方法是:
int year = random.Next(100) + 1950;
int daysInYear = DateTime.IsLeapYear(year) ? 366 : 365;
DateTime date = new DateTime(year, 1, 1).AddDays(random.Next(daysInYear));
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以获得一年中所有正确的日期,没有无效的日期 - 在您的原始代码中,您可以轻松地在2月30日结束,例如......假设您实际修复了代码以考虑到事实上,第二个论点Random.Next是排他性而非包容性.(否则你永远不会获得第30名,你也永远不会在12月获得价值...)
尽可能使用最合适的数据类型非常重要.如果要表示日期,请使用与日期相关的类型.如果要表示文本,请使用字符串.如果要表示数字,请使用适当的数字类型.你会发现如果你使用正确的数据类型,你可以摆脱很多错误.
| 归档时间: |
|
| 查看次数: |
1118 次 |
| 最近记录: |