关于c++的随机数
今天网上差了一下c++的随机数用法,好像有问题呀
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
void main()
{
int a[4],i;
srand((unsigned)time(NULL));
for(i=0;i<4;i++)
//a[i]=rand()%13+1;//这个到可以
a[i]=(int)(rand()*13/(float)RAND_MAX+1);//这个每次a[0]都是固定的值。
for(i=0;i<4;i++)
cout<<a[i]<<endl;
}
上面的程序,编译后生成exe文件,运行exe文件每次a[0]的值都一样,其它的到随机,请问这是怎么回事呀,如何让a[0]也随机。
问题点数:20、回复次数:5Top
1 楼Error_Code(void)回复于 2006-05-03 20:34:18 得分 0
srand((unsigned)time(NULL));
问题可能在这里
随即种子的问题吧 取时间 不知道变什么了 时?分?秒?
建议直接取秒Top
2 楼ma100()回复于 2006-05-03 20:36:02 得分 0
a[i]=(int)(rand()*13/(float)RAND_MAX+1);//这个每次a[0]都是固定的值。
不是,因为RAND_MAX太大了,所以你看着象一个值,可以打印float看看就知道了Top
3 楼chenhu_doc(^0^纯一狼^0^ 看书看到大笑,直到不能自已)回复于 2006-05-03 21:27:05 得分 0
ls 说的有理
Top
4 楼eminwoo(天邪鬼)回复于 2006-05-03 21:34:00 得分 20
这很容易
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
void main()
{
int a[4],i;
srand((unsigned)time(NULL));
for(i=0;i<4;i++)
{
rand()*13/(float)RAND_MAX+1;
a[i]=(int)(rand()*13/(float)RAND_MAX+1);
}
for(i=0;i<4;i++)
cout<<a[i]<<endl;
}
这样就没有固定值了Top
5 楼Error_Code(void)回复于 2006-05-03 21:56:35 得分 0
学习了..Top




