关于VC中的随机数问题---高手进来

jblan 2003-05-17 08:52:19
在VC中可以调用来获得0--32768的随机数,可是其实这些数是按一定次序排列的,都是从一个表中获取。
就好象运行一次程序获取了十个随机数。
如果再次运行这个程序再获得的十个随机数与上次运行时获得的是一致的,即这些数在数值上是随机的,但出现的位置是固定的。

我想获得彻底随机的数,无论是在数值上还是在位置上,范围是0---0.5
有人提示我可以在程序段加上一些空操作来获取不同的时钟进行一些运算来获得随机数。
可是具体上,我还不是很明白,和实际的代码怎么写,希望有高手帮忙!!!
...全文
14 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
put_get 2003-05-20
没种子啦:)
回复
lingyuner 2003-05-20
up
回复
dingyy 2003-05-19
用 rand()
回复
LionEagle 2003-05-19
因为你没有设置种子,因此每次运行均使用相同的缺省种子,导致每次生成相同的伪随机序列
回复
Jupin 2003-05-19
#include <time.h>
#include <stdio.h>
main()
{
float nRand;
int i;
srand((unsigned)time(NULL));
for (i = 0; i < 10; i++)
{
printf("%.4f\n", rand() / 32767.0 / 2.0);
}
}
回复
cnss 2003-05-18
VC能生成0-32K的随机数,不代表用一张32K的表就能装下生成的所有随机数列
RAND()内部用的是UINT,每次取UINT中的一部分(15位)返回,所以需要一张2^32个单元的表才能装下所有的随机数列
简单计算一下,需要8G的空间装表
回复
lyt_hf 2003-05-18
srand((unsigned)time(NULL)); //设置随机函数的种子数
int nRand=rand(); //产生随机数

根据当前时间设置种子数,因为每次时间不同,所以产生的随机数序列也应该不同!
回复
cxjddd 2003-05-17
unsigned long rnd()
{
static const unsigned long _a = 4064457;
static const unsigned long _c = 4116101;
unsigned long _u = 1;
return _u = _a * _u + _c ;
}
回复
相关推荐
发帖
工具平台和程序库
创建于2007-09-28

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
帖子事件
创建了帖子
2003-05-17 08:52
社区公告
暂无公告