C++ 随机产生0或1两个数字

C++ 随机产生0或1两个数字
如果是0,一个变量++,如果是0,另一个变量++
******************************
书上没说过,C++有随机函数吗?
rand()每次输出都是41。

int rand( void );
输出不可能每次都41啊。
int i = rand( )%2;就可以了啊!,再试试吧。

其他地方找来的一点资料:
rand(产生随机数)
表头文件: #include<stdlib.h>

定义函数 :int rand(void)

函数说明 :
因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。rand ()产生的是假随机数字,每次执行时是相同的。若要不同,以不同的值来初始化它.初始化的函数就是srand()。

返回值:
返回0至RAND_MAX之间的随机整数值,RAND_MAX的范围最少是在32767之间(int),即双字节(16位数)。若用unsigned int 双字节是65535,四字节是4294967295的整数范围。
0~RAND_MAX每个数字被选中的机率是相同的。

范例:
/* 产生介于1 到10 间的随机数值,此范例未设随机数种子,完整的随机数产生请参考
srand()*/
#include<stdlib.h>
main()
{
int i,j;
for(i=0;i<10;i++)
{
j=1+(int)(10.0*rand()/(RAND_MAX+1.0));
printf("%d ",j);
}
}
执行:

9 4 8 8 10 2 4 8 3 6
9 4 8 8 10 2 4 8 3 6 //再次执行仍然产生相同的随机数
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-28
你可以变通一下

用随机产生0-100之间的数

然后判断小于50 一个变量++

大于50另一个变量++

当然你也可以 rand()%1 0~1 之间

那你得判断float 太麻烦了

#include "iostream"
#include "time.h"
using namespace std;
int main()
{
int a,b,c;
srand((int)time(0));
a=rand()%100;
if (a<50)
{
b++;
}
else
c++;

return 0;
}
第2个回答  2011-05-28
//因为你的srand每次都初始化同一个值

#include <iostream>
using namespace std;
int main()
{
srand(unsigned(time(NULL)));
int n;
int _1,_0;
while( 1 )
{
cout<<"要产生多少个随机01?"<<endl;
cin>>n;
if( n<=0 ) continue;
_1 = _0 = 0;
while( n-- )
{
if ( rand()%2 == 1 )
{
_1++;
}
else
{
_0++;
}
}
cout<<" 1 的个数: "<<_1<<endl;
cout<<" 0 的个数: "<<_0<<endl;
cout<<endl;
}
return 0;
第3个回答  2011-05-28
#include<iostream>
using namespace std;
int main()
{int a=0,b=0;
if(rand()%2==1)
a++;
else
b++;
cout<<a<<b;
return 0;
}本回答被提问者采纳
相似回答