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

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各随机数的方法。谢谢先。
...全文
81 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
崔作非 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);
}
行不??

13,871

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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