我正在使用C#中的.NET应用程序生成一个可变长度的随机数字字符串.我想添加一个清单,允许用户选择0到9之间的任何数字组合,并防止它们出现在字符串中.目前,我只是这样做以获取字符串:
do
{
int num = rnd.Next(10);
output += num.ToString();
i++;
}
while (i < stringLength);
Run Code Online (Sandbox Code Playgroud)
我可以想出一种方法来排除选定的数字,一旦生成它们就把它们抛出而不是递增计数器,但似乎会有一个不那么浪费的算法.该程序将支持生成许多字符串,因此如果用户创建了数百万字符串,我希望将开销保持在最低限度.
额外奖励:我忘了提及我也想,如果有人能指出我这样的模式的资源.在不久的将来,我会根据参数随机编号,我会学习一些原则,而不是询问有关个别问题的问题.
Chr*_*isF 15
如果您生成一个允许的字符数组,那么从中选择:
int[] allowedDigits = {1, 2, 3, 6, 7, 0};
var output = new StringBuilder();
do
{
int num = rnd.Next(allowedDigits.Length);
output.Append(allowedDigits[num]);
i++;
}
while (i < stringLength);
Run Code Online (Sandbox Code Playgroud)
显然allowedDigits是生成而不是硬编码;)
使用a StringBuilder更有效率,您不必明确地执行ToString.
| 归档时间: |
|
| 查看次数: |
3847 次 |
| 最近记录: |