如何产生比较好的随机数?

beerboy 2004-04-29 09:28:27
在计算机上如何产生比较好的随机数?我用
for(int i=0;i<10000;i++)
{
randomize();
int a=random(1000);
.....
}
产生的随机数是一样的。我知道是因为randomize()是以系统时间为种子的。由于计算机执行速度特别快,所以在循环10000次的时候所的时间可能也不到randomize()能够分辨的时间。所以产生了10000个一抹一样的随机数。问题是我在randomize()前面加了一个Sleep(5),也不行呀。不知道什么原因。那位高手能否告诉我快速产生10000各随机数的方法。谢谢先。
...全文
48 6 点赞 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
崔作非 2004-04-30
补充,randomize()是不会产生相同的随机数的,要注意,第一个r是要用小写的才行,不能用大写的,还要加上两个头文件,stdlib.h, time.h就行了。
  • 打赏
  • 举报
回复
崔作非 2004-04-30
其实randomize()只要在开始执行一次就行了,不用放到循环里面,节省运行时间。
  • 打赏
  • 举报
回复
fyjin99 2004-04-30
for(int i=0;i<10000;i++)
{
randomize();
int a=random(1000);
.....
}
不仔细想还真不知道。有启发。
  • 打赏
  • 举报
回复
beerboy 2004-04-30
tompkins2000(空中猎手);
谢谢,呵呵,看来我是画蛇添足了。:=)。本来想让产生的随机数更随机,确忘记了计算机的执行速度了。就是没有反过来想一想只需要一次randomize()就行了。虽然产生的是一个种子内的随机数,但也凑合能用。由于我在用monte carlo方法编程序,需要产生大量随机数,所以....。谢谢 tompkins2000(空中猎手)。
  • 打赏
  • 举报
回复
空中猎手 2004-04-29
要么这样也行

TLargeInteger L;
for(int i=0;i<100;i++)
{
QueryPerformanceCounter(&L);
srand(int(L.QuadPart));
int a = rand() % 10000;
}
  • 打赏
  • 举报
回复
空中猎手 2004-04-29
randomize();
for(int i=0;i<10000;i++)
{
int a=random(1000);
}
行不??
  • 打赏
  • 举报
回复
相关推荐
发帖
C++ Builder
加入

1.3w+

社区成员

C++ Builder相关内容讨论区
申请成为版主
帖子事件
创建了帖子
2004-04-29 09:28
社区公告
暂无公告