首页
社区
课程
招聘
[求助]如何产生分布均匀的大随机数啊?
发表于: 2007-10-28 10:15 6764

[求助]如何产生分布均匀的大随机数啊?

2007-10-28 10:15
6764
C或者C++中,rand()只产生0-32767的随机数字,如果想产生
大于这个范围的随机数,比如0-999999,且分布均匀,怎么弄亚?
先谢了。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 194
活跃值: (71)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
如果分布均匀, 又叫随机数吗?
2007-10-28 12:23
0
雪    币: 437
活跃值: (273)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
3
怎么删除自己的帖子啊 又看错题目了
2007-10-28 12:31
0
雪    币: 211
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
int a;
srand(GetTickCount());
for(int i=0;i<sizeof(int);i++)
        ((byte*)&a)[i]=rand()/128;
2007-10-28 13:53
0
雪    币: 247
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个csdn里有个帖子专门探讨过这个问题
2007-10-29 08:55
0
雪    币: 80
活跃值: (14)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
感觉好象是散列表的问题,牵扯到散列算法。
2007-10-29 09:34
0
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
7
C语言:
#include <time.h>
#include <stdlib.h>

// 把时间作为随机数的种子
srand(time(NULL)) ;
int a = rand() ;//这样出来的随机应该很还是比较均匀的
int b = ( rand() * rand() ) % 1000000 ;

我一般就这样用的,至于是否满足你均匀的要求,这就不知道了,没有详细测试过。

如果有兴趣的话你也可以自己测试下,先随机产生几百万个数据,然后统计下
2007-10-29 19:16
0
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
8
牵扯到散列只是一种方法,如果你愿意的,你也可以跟几何数学中的“圆”联系起来,我倒还觉得“圆”比较均匀。
2007-10-29 19:18
0
游客
登录 | 注册 方可回帖
返回
//