我是这样写的:/* 以一定概率产生0或1 */
int flip(float r)
{
float rnd;
srand((unsigned)time(NULL) );
rnd = rand();
fprintf(tp,"%f\n",rand);
if(rnd <= prob)
return(1);
else
return(0);
}结果每次值都一样,为什么阿?
我的种子已经设置了阿!
int flip(float r)
{
float rnd;
srand((unsigned)time(NULL) );
rnd = rand();
fprintf(tp,"%f\n",rand);
if(rnd <= prob)
return(1);
else
return(0);
}结果每次值都一样,为什么阿?
我的种子已经设置了阿!
int flip(float r)
{
float rnd;
srand((unsigned)time(NULL) );
for(int i=0;i<10;i++)
{
rnd = rand();
fprintf(tp,"%f\n",rand);
}
if(rnd <= prob)
return(1);
else
return(0);
}
初始化 那么产生的随机数相同因为你的time是固定的
或者改为
Ctime t
((unsigned)(NULL)
tm = CTime::GetCurrentTime ()
srand((unsigned)tm(NULL) );
srand((unsigned)time(NULL) );
CTime tm;
tm = CTime::GetCurrentTime ();
srand((unsigned)tm(NULL) );后提示:term does not evaluate to a function估计要将tm进行转换
此时tm = CTime::GetCurrentTime ();应该多是一样的吧
我觉得没有用吧!
我也出过这样的哦
if(m=2)
可笑吧
{//在min和max范围内取一个随机数值
static int iInitSeed;
if( iMin >= iMax ) return iMin;
if( iInitSeed != 1 )
{
srand( (UINT)time( NULL ) );
iInitSeed = 1;
}
return iMin + rand() % ( iMax - iMin + 1 );
}
我希望可以在一个循环中不断得到新的不同的随机值。
但是按照上面办法,都不行!可能要自己写一个!
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>
const prob = RAND_MAX/2;
int flip()
{
int rnd;
rnd = rand();
//fprintf(tp,"%f\n",rand);
if(rnd <= prob)
return(1);
else
return(0);
}
void main()
{
srand((unsigned)time(NULL) );
for(int i=0;i<30000;i++)
{
cout<<flip()<<" ";
}
}
int x[9]={0,1,2,3,4,5,6,7,8};
int num=9;
int position;
for(int i=0;i<=2;i++)
{
for(int j=0;j<=2;j++)
{
position=rand()%num; //产生随机的position }
}
srand( GetTickCount() );
都没有错,而是rand()的值是由0至RAND_MAX(好像是0x7FFF)随机值,如果你的
if(rnd <= prob)
中的prob是一个极小的数,就会极易偏向一边了。
产生0或1的随机数
int nRand = rand() % 2;