做了个抽奖程序,
我是这样随机获取 1 到 10000 范围随机数的,rd = new Random();
int d=rd.Next(1,10000);但是运行的时候出错了,
System.StackOverflowException大家帮我解决一下,谢谢
我是这样随机获取 1 到 10000 范围随机数的,rd = new Random();
int d=rd.Next(1,10000);但是运行的时候出错了,
System.StackOverflowException大家帮我解决一下,谢谢
解决方案 »
- 从不同表中查到的字段如何显示在listview上
- 一个很简单的问题
- c# AnsiString
- 请教一个用户个人信息问题
- ContextMenuStrip绑定数据库中的表,显示数据库中相应的记录 ,实现我要的功能如何设计省、城市、地级市(县)的数据库表结构
- 问一个超简单的关于C#窗口问题
- 对象clone,是用序列化方式和用赋值方式比较
- “LiJoe(有看贴的权利,没有回帖的义务)” 和 “wlwhhy (.net) ”是怎么回事?怎么感觉好像是一个人
- C#难吗?
- 高分求助,解决了在给300分
- 为什么winform会提示创建组件失败?
- scope identity()、@@IDENTITY()是不是只能得到自增长的列?
Random rd = new Random();
int d;
for (int i = 0; i < 1000; i++)
{
d = rd.Next(1, 10000);
Response.Write("<li>" + d);
}
内存有 4G
我每次循环都 new Random();
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.StackOverflowException: 发生类型为 System.StackOverflowException 的异常。
int x = rd.Next(1, 10000);
我咋就没错误呢、
int d=rd.Next(1,10000);
不是全部代码吧?能不能贴全一些
改成Using(random rd = new random() )
{
int x = rc.next(1,10000);
}
试试看
int d=rd.Next(1,10000);
把int d单提出来 别没次循环都定义它
{
int d;
Random rd;
rd = new Random();
d=rd.Next(1,rencount + 1);
if (dhas(d))
{
d = rand();
}
return d;
}dhas(d) 这个方法是判断生成出来的随机数是不是生成过了
修改为
d=rd.Next(1,rencount + 1);
while (dhas(d))
{
d=rd.Next(1,rencount + 1);
}
/// 随机1-100不重复的数
/// </summary>
public static void RndHundred()
{
int[] iarr = new int[100];
ArrayList arrlist = new ArrayList();
Random rnd = new Random();
while (arrlist.Count <= 100)
{
int num = rnd.Next(1, 101);
if (!arrlist.Contains(num))
{
arrlist.Add(num + " ");
}
}
for (int i = 0; i < 100; i++)
{
Console.Write(arrlist[i]);
}
}
我把rand() 改 为 rand(rd) 把生成的Random 对象传进出
结果速度快了许多,也没出错。
也不知道问题是不是解决了。
http://www.cnblogs.com/eaglet/archive/2011/01/17/1937083.html
不重复随机数列生成算法。
太慢了,当然可以使用Random的写法:var rnd = new Random();
var result = Enumerable.Range(1, 10000).OrderBy(c => rnd.Next()).ToList();
楼主为什么连rd=new random也要交在循环中呢,你的循环什么条件结束?