【发布时间】:2011-07-12 18:29:51
【问题描述】:
我正在使用 C# 开发一个 .NET 应用程序,它将生成一个可变长度的随机数字字符串。我想添加一个清单,允许用户选择零到九之间的任意数字组合,并防止它们出现在字符串中。目前,我只是这样做来获取字符串:
do
{
int num = rnd.Next(10);
output += num.ToString();
i++;
}
while (i < stringLength);
我可以想出一种方法来排除选定的数字,一旦它们生成就将其丢弃,而不是增加计数器,但似乎会有一种不那么浪费的算法。该程序将支持生成多个字符串,因此如果用户创建数百万个字符串,我希望将开销保持在最低限度。
奖励:我忘了提到,如果有人可以为我指出此类模式的资源,我也很高兴。在不久的将来,我将大量使用基于参数的随机数,我想学习一些原则,而不是就诸如此类的个别问题提出问题。
【问题讨论】:
-
喂!完全不是您问题的答案,但是:在 .NET 中使用“+”运算符进行字符串连接很昂贵。那里的 StringBuilder 会更好。抱歉,只是我的一个小问题。
-
Knuth 的计算机编程艺术,尤其是第 4 卷,您可能会觉得有用的参考:www-cs-faculty.stanford.edu/~uno/taocp.html