最佳方法,生成大量指定位数的随机数

bychgh 2011-02-24 10:05:33
(100分),一个页面,比如需要生成0-5000个随机8位数的数字,什么方法效率最高,且消耗服务器资源最少?

(100分),如果是数字+字母,又该怎么样?
...全文
307 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bychgh 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fengyarongaa 的回复:]
百度一下 方法一大堆
[/Quote]
等于没说
ycproc 2011-02-25
  • 打赏
  • 举报
回复
百度一下 方法一大堆
nandy249407850 2011-02-24
  • 打赏
  • 举报
回复
拜读
子夜__ 2011-02-24
  • 打赏
  • 举报
回复
  public string getRandom(int length)
{
Dictionary<double, object> test = new Dictionary<double, object>();
int DoubleCount = 0;
for (int bi1 = 0; bi1 < length; bi1++)
{
Guid temp = Guid.NewGuid();
double Return = BitConverter.ToDouble(temp.ToByteArray(), 0);
if (test.ContainsKey(Return))
{
DoubleCount++;
}
else
{
test.Add(Return, null);
}
}
return DoubleCount.ToString();
}



LZ你看看这两篇帖子 会收获很多

帖子1

帖子2
bychgh 2011-02-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dalmeeme 的回复:]
以上两个方法,测试下来,速度比较快,内存基本不增加。
[/Quote]

这个方法怎么样


//数字+大写字母
public string getRandom(int length)
{
byte[] random = new Byte[length / 2];
// 使用加密服务提供程序 (CSP) 提供的实现来实现加密随机数生成器 (RNG)。无法继承此类
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
rng.GetNonZeroBytes(random);

StringBuilder sb = new StringBuilder(length);
int i;
for (i = 0; i < random.Length; i++)
{
// 以16进制格式输出
sb.Append(String.Format("{0:X2}", random[i]));
}
return sb.ToString();
}
dalmeeme 2011-02-24
  • 打赏
  • 举报
回复
以上两个方法,测试下来,速度比较快,内存基本不增加。
dalmeeme 2011-02-24
  • 打赏
  • 举报
回复
第二问:
		string[] result = new string[5000];
Random r = new Random();
StringBuilder sb;
int n;
for (int i = 0; i < result.Length; i++)
{
sb = new StringBuilder();
for (int j = 0; j < 8; j++)
{
n = r.Next(62);
if (n < 10)
sb.Append(n);
else
if (n < 36)
sb.Append((char)(n + 55));
else
sb.Append((char)(n + 61));
}
result[i] = sb.ToString();
}
for (int i = 0; i < result.Length; i++)
Response.Write(result[i] + "<br/>");
dalmeeme 2011-02-24
  • 打赏
  • 举报
回复
第一问:
		string[] result = new string[5000];
Random r = new Random();
StringBuilder sb;
for (int i = 0; i < result.Length; i++)
{
sb = new StringBuilder();
for (int j = 0; j < 8; j++)
sb.Append(r.Next(10));
result[i] = sb.ToString();
}
for (int i = 0; i < result.Length; i++)
Response.Write(result[i] + "<br/>");
wuyq11 2011-02-24
  • 打赏
  • 举报
回复
System.Guid.NewGuid().ToString("N");//截取

List<char> chars = new List<char>(62);
for (int i = 0; i < 10; i++)
chars.Add((char)('0' + i));
for (int i = 0; i < 26; i++)
chars.Add((char)('A' + i));
for (int i = 0; i < 26; i++)
chars.Add((char)('a' + i));
string result = "";
int index;
Random r = new Random();
for (int i = 0; i < 8; i++)
{
index = r.Next(chars.Count);
result += chars[index].ToString();
chars.RemoveAt(index);
}
Response.Write(result);

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧